diff --git a/railties/CHANGELOG b/railties/CHANGELOG index 76de230e28..ba9d2930b3 100644 --- a/railties/CHANGELOG +++ b/railties/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added Configuration#after_initialize for registering a block which gets called after the framework is fully initialized. Useful for things like per-environment configuration of plugins. [Michael Koziarski] + * Added check for RAILS_FRAMEWORK_ROOT constant that allows the Rails framework to be found in a different place than vendor/rails. Should be set in boot.rb. [DHH] * Fixed that static requests could unlock the mutex guarding dynamic requests in the WEBrick servlet #3433 [tom@craz8.com] diff --git a/railties/lib/initializer.rb b/railties/lib/initializer.rb index e1b058f3b9..9550d6d583 100644 --- a/railties/lib/initializer.rb +++ b/railties/lib/initializer.rb @@ -101,6 +101,9 @@ module Rails # Routing must be initialized after plugins to allow the former to extend the routes initialize_routing + + # the framework is now fully initialized + after_initialize end # Set the $LOAD_PATH based on the value of @@ -245,7 +248,7 @@ module Rails require('active_support/whiny_nil') if configuration.whiny_nils end - # Initialize framework-specific settings for each of the loaded frameworks + # Initializes framework-specific settings for each of the loaded frameworks # (Configuration#frameworks). The available settings map to the accessors # on each of the corresponding Base classes. def initialize_framework_settings @@ -257,6 +260,12 @@ module Rails end end end + + # Fires the user-supplied after_initialize block (Configuration#after_initialize) + def after_initialize + configuration.after_initialize_block.call if configuration.after_initialize_block + end + protected # Return a list of plugin paths within base_path. A plugin path is @@ -440,7 +449,19 @@ module Rails def environment ::RAILS_ENV end - + + # Sets a block which will be executed after rails has been fully initialized. + # Useful for per-environment configuration which depends on the framework being + # fully initialized. + def after_initialize(&after_initialize_block) + @after_initialize_block = after_initialize_block + end + + # Returns the block set in Configuration#after_initialize + def after_initialize_block + @after_initialize_block + end + private def root_path ::RAILS_ROOT