From 49fad6e6d5171e632086d7f7491ef14c8a04e4cc Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Tue, 7 Feb 2006 00:21:45 +0000 Subject: [PATCH] Add Configuration#after_initialize for specifying a block to be executed after the framework is completely initialized. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3547 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- railties/CHANGELOG | 2 ++ railties/lib/initializer.rb | 25 +++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) 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 @@ def process # 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 @@ def initialize_whiny_nils 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 @@ def initialize_framework_settings 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 @@ def environment_path 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 -- GitLab