From 6f6a589d4b564f5db78735ad0c7225c22ced57ac Mon Sep 17 00:00:00 2001 From: Yehuda Katz + Carl Lerche Date: Mon, 28 Sep 2009 17:57:36 -0700 Subject: Create the application object from config/environment.rb This is preliminary and not necessarily reflective of the full plan. --- railties/lib/rails/application.rb | 12 ++++++++++-- railties/lib/rails/core.rb | 16 ++++++++-------- .../lib/rails/generators/rails/app/templates/config.ru | 5 +++-- .../rails/generators/rails/app/templates/config/boot.rb | 4 ++-- railties/lib/rails/initializer.rb | 17 ++++++++--------- 5 files changed, 31 insertions(+), 23 deletions(-) (limited to 'railties/lib') diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 14336d90c3..cadfc5010b 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -1,12 +1,20 @@ module Rails class Application - attr_accessor :middleware, :routes + attr_accessor :routes, :config + + def self.load(environment_file) + environment = File.read(environment_file) + Object.class_eval(environment, environment_file) + end def initialize - @middleware = ActionDispatch::MiddlewareStack.new @routes = ActionController::Routing::Routes end + def middleware + config.middleware + end + def call(env) @app ||= middleware.build(@routes) @app.call(env) diff --git a/railties/lib/rails/core.rb b/railties/lib/rails/core.rb index 4c2789746c..4be90de792 100644 --- a/railties/lib/rails/core.rb +++ b/railties/lib/rails/core.rb @@ -5,6 +5,14 @@ module Rails # --- # TODO: w0t? class << self + def application + @@application + end + + def application=(application) + @@application = application + end + # The Configuration instance used to configure the Rails environment def configuration @@configuration @@ -14,14 +22,6 @@ module Rails @@configuration = configuration end - def application - @@application - end - - def application=(application) - @@application = application - end - def initialized? @initialized || false end diff --git a/railties/lib/rails/generators/rails/app/templates/config.ru b/railties/lib/rails/generators/rails/app/templates/config.ru index 541e200193..52a8a8e798 100644 --- a/railties/lib/rails/generators/rails/app/templates/config.ru +++ b/railties/lib/rails/generators/rails/app/templates/config.ru @@ -1,7 +1,8 @@ # 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 ActionController::Dispatcher.new +run Rails::Application.load(::File.dirname(__FILE__) + '/config/environment.rb') diff --git a/railties/lib/rails/generators/rails/app/templates/config/boot.rb b/railties/lib/rails/generators/rails/app/templates/config/boot.rb index 1e09cf08ec..d2652af9b0 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/boot.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/boot.rb @@ -46,7 +46,7 @@ module Rails %w(railties/lib).each do |path| $:.unshift("#{RAILS_ROOT}/vendor/rails/#{path}") end - require "rails/initializer" + require "rails" Rails::Initializer.run(:install_gem_spec_stubs) Rails::GemDependency.add_frozen_gem_path end @@ -56,7 +56,7 @@ module Rails def load_initializer self.class.load_rubygems load_rails_gem - require 'rails/initializer' + require 'rails' end def load_rails_gem diff --git a/railties/lib/rails/initializer.rb b/railties/lib/rails/initializer.rb index f6aca082e8..382838f831 100644 --- a/railties/lib/rails/initializer.rb +++ b/railties/lib/rails/initializer.rb @@ -90,7 +90,6 @@ module Rails def run(initializer = nil) Rails.configuration = Base.config = @config - Rails.application = nil if initializer run_initializer(initializer) @@ -98,7 +97,14 @@ module Rails @initializers.each {|block| run_initializer(block) } end - Rails.application + # HAX + # TODO: remove hax + unless initializer + app = Rails::Application.new + app.config = @config + + Rails.application = app + end end end @@ -605,11 +611,4 @@ Run `rake gems:install` to install the missing gems. Rails::Generators.options.deep_merge! config.generators.options end end - - Initializer.default.add :build_application do - if configuration.frameworks.include?(:action_controller) - Rails.application = Rails::Application.new - Rails.application.middleware = configuration.middleware - end - end end -- cgit v1.2.3