提交 c9d4529c 编写于 作者: C Carl Lerche

Change Rails::Application to a class that is inherited from.

	This is still very experimental.
上级 d1a63b15
require 'rails/application'
require 'rails/initializer'
module Rails
class Application
attr_accessor :config
def self.load(environment_file)
environment = File.read(environment_file)
Object.class_eval(environment, environment_file)
def self.config
@config ||= Configuration.new
end
def self.config=(config)
@config = config
end
def config
self.class.config
end
def routes
......@@ -16,7 +22,7 @@ def middleware
end
def call(env)
@app ||= middleware.build(@routes)
@app ||= middleware.build(routes)
@app.call(env)
end
end
......
# Rack Dispatcher
# Bootstrap rails
require ::File.dirname(__FILE__) + '/config/boot'
# Require your environment file to bootstrap Rails
require ::File.dirname(__FILE__) + '/config/environment'
# Dispatch the request
run Rails::Application.load(::File.dirname(__FILE__) + '/config/environment.rb')
run Rails.application.new
......@@ -30,7 +30,7 @@ def config=(config)
end
def config
@@config
@@config || Configuration.new
end
alias configuration config
......@@ -96,15 +96,6 @@ def run(initializer = nil)
else
@initializers.each {|block| run_initializer(block) }
end
# HAX
# TODO: remove hax
unless initializer
app = Rails::Application.new
app.config = @config
Rails.application = app
end
end
end
......@@ -113,10 +104,16 @@ def self.default
end
def self.run(initializer = nil, config = nil)
default.config = config if config
default.config ||= Configuration.new
yield default.config if block_given?
default.run(initializer)
# TODO: Clean this all up
if initializer
default.config = config
default.run(initializer)
else
Rails.application = Class.new(Application)
yield Rails.application.config if block_given?
default.config = Rails.application.config
default.run
end
end
end
......
......@@ -40,11 +40,7 @@ def setup
test "Rails.application is available after config.ru has been racked up" do
rackup
assert Rails.application.is_a?(Rails::Application)
end
test "class_evaling config/environment.rb returns the application object" do
assert Rails::Application.load("#{app_path}/config/environment.rb").is_a?(Rails::Application)
assert Rails.application.new.is_a?(Rails::Application)
end
test "the config object is available on the application object" do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册