diff options
author | Xavier Noria <fxn@hashref.com> | 2019-03-30 12:20:00 +0100 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2019-03-30 13:01:42 +0100 |
commit | a3e061def14b50b86d9366d45565a4ad2efb0b08 (patch) | |
tree | 595a53246a027879e527acc176e612f2b69713e6 /railties/lib | |
parent | 278f0dfeac03e9e9d57eae8f4618ff94d8584abe (diff) | |
download | rails-a3e061def14b50b86d9366d45565a4ad2efb0b08.tar.gz rails-a3e061def14b50b86d9366d45565a4ad2efb0b08.tar.bz2 rails-a3e061def14b50b86d9366d45565a4ad2efb0b08.zip |
optimizes eager loading in :zeitwerk mode
During initialization, the eager load paths of engines are unshifted
into AS::Dependencies.autoload_paths. After that, the collection is
frozen. (See the initializers in railties/lib/rails/engine.rb.)
Hence, there is no eager load path that is not an autoload path too, and
so the array difference in the deleted code is always an empty array.
Just do nothing.
Diffstat (limited to 'railties/lib')
-rw-r--r-- | railties/lib/rails/engine.rb | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index 2b5afd51b8..9b3698aa5e 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -469,13 +469,16 @@ module Rails self end - # Eager load the application by loading all ruby - # files inside eager_load paths. def eager_load! - if Rails.autoloaders.zeitwerk_enabled? - eager_load_with_zeitwerk! - else - eager_load_with_dependencies! + # Already done by Zeitwerk::Loader.eager_load_all in the finisher. + return if Rails.autoloaders.zeitwerk_enabled? + + 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 @@ -654,22 +657,6 @@ 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) |