diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2014-08-07 15:28:31 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2014-08-07 15:28:53 -0700 |
commit | 22969898262b8c92bea1ac93b668a817c7511158 (patch) | |
tree | 524b790825b184c258e08d6254d865b1eda6f45c | |
parent | 42c569e71eb587d6f375b209d354cc1075ca6817 (diff) | |
download | rails-22969898262b8c92bea1ac93b668a817c7511158.tar.gz rails-22969898262b8c92bea1ac93b668a817c7511158.tar.bz2 rails-22969898262b8c92bea1ac93b668a817c7511158.zip |
defer running after_config hooks until after the object is allocated
-rw-r--r-- | railties/lib/rails/application.rb | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 292986b475..796c068a10 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -90,6 +90,10 @@ module Rails Rails.app_class = base end + def instance + super.run_load_hooks! + end + # Makes the +new+ method public. # # Note that Rails::Application inherits from Rails::Engine, which @@ -116,22 +120,33 @@ module Rails @ordered_railties = nil @railties = nil @message_verifiers = {} + @ran_load_hooks = false + + # are these actually used? + @initial_variable_values = initial_variable_values + @block = block add_lib_to_load_path! + end + + # Returns true if the application is initialized. + def initialized? + @initialized + end + + def run_load_hooks! # :nodoc: + return self if @ran_load_hooks + @ran_load_hooks = true ActiveSupport.run_load_hooks(:before_configuration, self) - initial_variable_values.each do |variable_name, value| + @initial_variable_values.each do |variable_name, value| if INITIAL_VARIABLES.include?(variable_name) instance_variable_set("@#{variable_name}", value) end end - instance_eval(&block) if block_given? - end - - # Returns true if the application is initialized. - def initialized? - @initialized + instance_eval(&@block) if @block + self end # Implements call according to the Rack API. It simply |