Add lib to load paths when application is inherited to be able to load lib code during configuration.
This commit is contained in:
parent
cae2519900
commit
5a0d73f17c
|
@ -67,6 +67,7 @@ module Rails
|
|||
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 @@ module Rails
|
|||
|
||||
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 Rails
|
|||
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 @@ module ApplicationTests
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue