aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-08-07 15:28:31 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2014-08-07 15:28:53 -0700
commit22969898262b8c92bea1ac93b668a817c7511158 (patch)
tree524b790825b184c258e08d6254d865b1eda6f45c /railties
parent42c569e71eb587d6f375b209d354cc1075ca6817 (diff)
downloadrails-22969898262b8c92bea1ac93b668a817c7511158.tar.gz
rails-22969898262b8c92bea1ac93b668a817c7511158.tar.bz2
rails-22969898262b8c92bea1ac93b668a817c7511158.zip
defer running after_config hooks until after the object is allocated
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/application.rb29
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