From a094f3a115a235879d717c7822f0815ffdfa18c1 Mon Sep 17 00:00:00 2001 From: macournoyer Date: Thu, 11 Feb 2010 13:56:20 -0500 Subject: [PATCH] Add detection of config.ru based Rack apps in loader. Makes Rails 3 work. --- CHANGELOG | 1 + lib/rack/adapter/loader.rb | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index b935b007..801a9ffe 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,5 @@ == 1.2.6 + * Auto-detect and load config.ru files on start. Makes Rails 3 work. * Fix Thin not obeying to QUIT / TERM signal under Ruby 1.9 [Nate Wiger] [#123 state:resolved] == 1.2.5 This Is Not A Web Server diff --git a/lib/rack/adapter/loader.rb b/lib/rack/adapter/loader.rb index 44b04a97..61f78b1b 100644 --- a/lib/rack/adapter/loader.rb +++ b/lib/rack/adapter/loader.rb @@ -8,6 +8,7 @@ class AdapterNotFound < RuntimeError; end # NOTE: If a framework has a file that is not unique, make sure to place # it at the end. ADAPTERS = [ + [:rack, 'config.ru'], [:rails, 'config/environment.rb'], [:ramaze, 'start.rb'], [:halcyon, 'runner.ru'], @@ -32,6 +33,11 @@ def self.guess(dir) # Loads an adapter identified by +name+ using +options+ hash. def self.for(name, options={}) case name.to_sym + when :rack + ENV['RACK_ENV'] = options[:environment] + rackup_code = File.read("config.ru") + return eval("Rack::Builder.new {( #{rackup_code}\n )}.to_app", TOPLEVEL_BINDING, "config.ru") + when :rails return Rails.new(options.merge(:root => options[:chdir]))