diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2014-11-04 14:54:52 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2014-11-04 14:54:52 -0800 |
commit | 9dbcac78113808da23dfe1e3e7b0cc6a390e03be (patch) | |
tree | ed07c9da66a8c86df2a59cf7d29b303dbb3b0c20 | |
parent | 0d5a384498296f005395d02943bd18e688aba436 (diff) | |
download | rails-9dbcac78113808da23dfe1e3e7b0cc6a390e03be.tar.gz rails-9dbcac78113808da23dfe1e3e7b0cc6a390e03be.tar.bz2 rails-9dbcac78113808da23dfe1e3e7b0cc6a390e03be.zip |
add lib to $LOAD_PATH on application inhertence. fixes #17106
-rw-r--r-- | railties/lib/rails/application.rb | 13 | ||||
-rw-r--r-- | railties/lib/rails/engine.rb | 9 | ||||
-rw-r--r-- | railties/test/application/configuration_test.rb | 3 |
3 files changed, 16 insertions, 9 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index bc966e87c6..18d9cb72d6 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -88,6 +88,7 @@ module Rails def inherited(base) super Rails.app_class = base + add_lib_to_load_path!(find_root(base.called_from)) end def instance @@ -98,6 +99,10 @@ module Rails new(initial_variable_values, &block).run_load_hooks! end + def find_root(from) + find_root_with_flag "config.ru", from, Dir.pwd + end + # Makes the +new+ method public. # # Note that Rails::Application inherits from Rails::Engine, which @@ -129,8 +134,6 @@ module Rails # 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. @@ -313,8 +316,8 @@ module Rails # are changing config.root inside your application definition or having a custom # Rails application, you will need to add lib to $LOAD_PATH on your own in case # you need to load files in lib/ during the application configuration as well. - def add_lib_to_load_path! #:nodoc: - path = File.join config.root, 'lib' + def self.add_lib_to_load_path!(root) #:nodoc: + path = File.join root, 'lib' if File.exist?(path) && !$LOAD_PATH.include?(path) $LOAD_PATH.unshift(path) end @@ -358,7 +361,7 @@ module Rails end def config #:nodoc: - @config ||= Application::Configuration.new(find_root_with_flag("config.ru", Dir.pwd)) + @config ||= Application::Configuration.new(self.class.find_root(self.class.called_from)) end def config=(configuration) #:nodoc: diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index dc3da1eb41..d985518fd9 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -364,6 +364,10 @@ module Rails super end + def find_root(from) + find_root_with_flag "lib", from + end + def endpoint(endpoint = nil) @endpoint ||= nil @endpoint = endpoint if endpoint @@ -531,7 +535,7 @@ module Rails # Define the configuration object for the engine. def config - @config ||= Engine::Configuration.new(find_root_with_flag("lib")) + @config ||= Engine::Configuration.new(self.class.find_root(self.class.called_from)) end # Load data from db/seeds.rb file. It can be used in to load engines' @@ -658,8 +662,7 @@ module Rails paths["db/migrate"].existent.any? end - def find_root_with_flag(flag, default=nil) #:nodoc: - root_path = self.class.called_from + def self.find_root_with_flag(flag, root_path, default=nil) #:nodoc: while root_path && File.directory?(root_path) && !File.exist?("#{root_path}/#{flag}") parent = File.dirname(root_path) diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 2b9f1d9cc1..2b6eb3624a 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -66,10 +66,11 @@ module ApplicationTests end RUBY add_to_top_of_config <<-RUBY - equire 'my_logger' + require 'my_logger' config.logger = MyLogger.new STDOUT RUBY require "#{app_path}/config/environment" + assert_equal 'MyLogger', Rails.application.config.logger.class.name end test "a renders exception on pending migration" do |