提交 83a58e06 编写于 作者: J José Valim 提交者: Mikel Lindsaar

Add lib to load paths when application is inherited to be able to load lib...

Add lib to load paths when application is inherited to be able to load lib code during configuration.
上级 53efdc2e
......@@ -67,6 +67,7 @@ def inherited(base)
raise "You cannot have more than one Rails::Application" if Rails.application
super
Rails.application = base.instance
Rails.application.add_lib_to_load_paths!
ActiveSupport.run_load_hooks(:before_configuration, base.instance)
end
......@@ -83,11 +84,21 @@ def method_missing(*args, &block)
delegate :middleware, :to => :config
def add_lib_to_load_paths!
path = config.root.join('lib').to_s
$LOAD_PATH.unshift(path) if File.exists?(path)
end
def require_environment!
environment = paths.config.environment.to_a.first
require environment if environment
end
def eager_load!
railties.all(&:eager_load!)
super
end
def routes
@routes ||= ActionDispatch::Routing::RouteSet.new
end
......
......@@ -38,7 +38,7 @@ module Finisher
initializer :eager_load! do
if config.cache_classes && !$rails_rake_task
ActiveSupport.run_load_hooks(:before_eager_load, self)
railties.all(&:eager_load!)
eager_load!
end
end
......
......@@ -19,6 +19,23 @@ def setup
assert $:.include?("#{app_path}/app/models")
end
test "initializing an application adds lib path on inheritance hook" do
app_file "lib/foo.rb", <<-RUBY
module Foo; end
RUBY
add_to_config <<-RUBY
require "foo"
raise "Expected Foo to be defined" unless defined?(Foo)
RUBY
assert_nothing_raised do
require "#{app_path}/config/environment"
end
assert $:.include?("#{app_path}/lib")
end
test "initializing an application eager load any path under app" do
app_file "app/anything/foo.rb", <<-RUBY
module Foo; end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册