Skip to content
Create a gist now

Instantly share code, notes, and snippets.

Rails Lightweight Stack. Most of this is detailed on Crafting Rails Applications - http://pragprog.com/book/jvrails/crafting-rails-applications
# Run this file with `RAILS_ENV=production rackup -p 3000 -s thin`
# Be sure to have rails and thin installed.
require "rubygems"
require "rails"
# Let's load only action controller. If you want
# to use active record, just require it as well.
require "action_controller/railtie"
class MyApp < Rails::Application
routes.append do
match "/hello/world" => "hello#world"
end
# Let's shrink the stack by removing some middlewares.
# The remaining stack is printed below.
config.middleware.delete "ActionDispatch::Static"
config.middleware.delete "Rack::Lock"
config.middleware.delete "Rack::MethodOverride"
config.middleware.delete "Rails::Rack::Logger"
config.middleware.delete "ActionDispatch::DebugExceptions"
config.middleware.delete "ActionDispatch::RequestId"
config.middleware.delete "ActionDispatch::RemoteIp"
config.middleware.delete "ActionDispatch::Reloader"
config.middleware.delete "ActionDispatch::Flash"
config.middleware.delete "ActionDispatch::BestStandardsSupport"
# We need a secret token for session, cookies, etc.
config.secret_token = "49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
end
# This is a barebone controller. Include the modules you want, more info here:
# http://piotrsarnacki.com/2010/12/12/lightweight-controllers-with-rails3/
class HelloController < ActionController::Metal
include ActionController::Rendering
def world
render :text => "Hello world!"
end
end
# Initialize the app
MyApp.initialize!
# Print the stack for fun!
puts ">> Starting Rails lightweight stack"
Rails.configuration.middleware.each do |middleware|
puts "use #{middleware.inspect}"
end
puts "run #{Rails.application.class.name}.routes"
# Run it!
run MyApp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.