aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/engine.rb
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2019-02-11 12:44:25 -0800
committerXavier Noria <fxn@hashref.com>2019-02-12 02:28:04 -0800
commit821d6c694cd305b7792b96d6ebc1c15ca235cf3e (patch)
treecb72d427f1744ad5a5c7dc901cb53db63c94a591 /railties/lib/rails/engine.rb
parentad3cbc2452e8150542ecb539925396361f12534c (diff)
downloadrails-821d6c694cd305b7792b96d6ebc1c15ca235cf3e.tar.gz
rails-821d6c694cd305b7792b96d6ebc1c15ca235cf3e.tar.bz2
rails-821d6c694cd305b7792b96d6ebc1c15ca235cf3e.zip
Zeitwerk integration
Diffstat (limited to 'railties/lib/rails/engine.rb')
-rw-r--r--railties/lib/rails/engine.rb26
1 files changed, 20 insertions, 6 deletions
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index d6c329b581..2485158a7b 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -472,12 +472,10 @@ module Rails
# Eager load the application by loading all ruby
# files inside eager_load paths.
def eager_load!
- config.eager_load_paths.each do |load_path|
- # Starts after load_path plus a slash, ends before ".rb".
- relname_range = (load_path.to_s.length + 1)...-3
- Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
- require_dependency file[relname_range]
- end
+ if Rails.autoloader
+ eager_load_with_zeitwerk!
+ else
+ eager_load_with_dependencies!
end
end
@@ -653,6 +651,22 @@ module Rails
private
+ def eager_load_with_zeitwerk!
+ (config.eager_load_paths - Zeitwerk::Loader.all_dirs).each do |path|
+ Dir.glob("#{path}/**/*.rb").sort.each { |file| require file }
+ end
+ end
+
+ def eager_load_with_dependencies!
+ config.eager_load_paths.each do |load_path|
+ # Starts after load_path plus a slash, ends before ".rb".
+ relname_range = (load_path.to_s.length + 1)...-3
+ Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
+ require_dependency file[relname_range]
+ end
+ end
+ end
+
def load_config_initializer(initializer) # :doc:
ActiveSupport::Notifications.instrument("load_config_initializer.railties", initializer: initializer) do
load(initializer)