Skip to content

Commit 57c7cbb

Browse files
committed
depend on Zeitwerk 2
1 parent c9e4c84 commit 57c7cbb

File tree

6 files changed

+28
-7
lines changed

6 files changed

+28
-7
lines changed

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ PATH
7171
i18n (>= 0.7, < 2)
7272
minitest (~> 5.1)
7373
tzinfo (~> 1.1)
74-
zeitwerk (~> 1.4, >= 1.4.3)
74+
zeitwerk (~> 2.0)
7575
rails (6.0.0.beta3)
7676
actioncable (= 6.0.0.beta3)
7777
actionmailbox (= 6.0.0.beta3)
@@ -526,7 +526,7 @@ GEM
526526
websocket-extensions (0.1.3)
527527
xpath (3.2.0)
528528
nokogiri (~> 1.8)
529-
zeitwerk (1.4.3)
529+
zeitwerk (2.0.0)
530530

531531
PLATFORMS
532532
java

activesupport/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
* Depends on Zeitwerk 2, which stores less metadata if reloading is disabled
2+
and hence uses less memory when `config.cache_classes` is `true`, a standard
3+
setup in production.
4+
5+
*Xavier Noria*
6+
17
* In `:zeitwerk` mode, eager load directories in engines and applications only
28
if present in their respective `config.eager_load_paths`.
39

activesupport/activesupport.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ Gem::Specification.new do |s|
3434
s.add_dependency "tzinfo", "~> 1.1"
3535
s.add_dependency "minitest", "~> 5.1"
3636
s.add_dependency "concurrent-ruby", "~> 1.0", ">= 1.0.2"
37-
s.add_dependency "zeitwerk", "~> 1.4", ">= 1.4.3"
37+
s.add_dependency "zeitwerk", "~> 2.0"
3838
end

activesupport/lib/active_support/dependencies/zeitwerk_integration.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,15 @@ def self.camelize(basename, _abspath)
5151
end
5252

5353
class << self
54-
def take_over
55-
setup_autoloaders
54+
def take_over(enable_reloading:)
55+
setup_autoloaders(enable_reloading)
5656
freeze_paths
5757
decorate_dependencies
5858
end
5959

6060
private
6161

62-
def setup_autoloaders
62+
def setup_autoloaders(enable_reloading)
6363
Dependencies.autoload_paths.each do |autoload_path|
6464
# Zeitwerk only accepts existing directories in `push_dir` to
6565
# prevent misconfigurations.
@@ -72,6 +72,7 @@ def setup_autoloaders
7272
autoloader.do_not_eager_load(autoload_path) unless eager_load?(autoload_path)
7373
end
7474

75+
Rails.autoloaders.main.enable_reloading if enable_reloading
7576
Rails.autoloaders.each(&:setup)
7677
end
7778

railties/lib/rails/application/finisher.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module Finisher
2424
initializer :let_zeitwerk_take_over do
2525
if config.autoloader == :zeitwerk
2626
require "active_support/dependencies/zeitwerk_integration"
27-
ActiveSupport::Dependencies::ZeitwerkIntegration.take_over
27+
ActiveSupport::Dependencies::ZeitwerkIntegration.take_over(enable_reloading: !config.cache_classes)
2828
end
2929
end
3030

railties/test/application/zeitwerk_integration_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,20 @@ class RESTfulController < ApplicationController
131131
assert $zeitwerk_integration_test_post
132132
end
133133

134+
test "reloading is enabled if config.cache_classes is false" do
135+
boot
136+
137+
assert Rails.autoloaders.main.reloading_enabled?
138+
assert_not Rails.autoloaders.once.reloading_enabled?
139+
end
140+
141+
test "reloading is disabled if config.cache_classes is true" do
142+
boot("production")
143+
144+
assert_not Rails.autoloaders.main.reloading_enabled?
145+
assert_not Rails.autoloaders.once.reloading_enabled?
146+
end
147+
134148
test "eager loading loads code in engines" do
135149
$test_blog_engine_eager_loaded = false
136150

0 commit comments

Comments
 (0)