Steps to reproduce
initialize a rails app twice:
require "action_controller/railtie"
class App < Rails::Application; end
a = App.new
a.initialize!
b = App.new
b.initialize!
Expected behavior
no errors should be raised - this is the case on 6.0.3.7 and 6.1.3.2 with default configs
Actual behavior
on main i get this error:
Traceback (most recent call last):
22: from ./bug.rb:8:in `<main>'
21: from /Users/jon/.rvm/gems/ruby-2.7.3/bundler/gems/rails-b678667853b4/railties/lib/rails/application.rb:389:in `initialize!'
20: from /Users/jon/.rvm/gems/ruby-2.7.3/bundler/gems/rails-b678667853b4/railties/lib/rails/initializable.rb:60:in `run_initializers'
19: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
18: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
17: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
16: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:347:in `call'
15: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:347:in `each'
14: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
13: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:415:in `each_strongly_connected_component_from'
12: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:415:in `call'
11: from /Users/jon/.rvm/gems/ruby-2.7.3/bundler/gems/rails-b678667853b4/railties/lib/rails/initializable.rb:50:in `tsort_each_child'
10: from /Users/jon/.rvm/gems/ruby-2.7.3/bundler/gems/rails-b678667853b4/railties/lib/rails/initializable.rb:50:in `each'
9: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
8: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
7: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
6: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
5: from /Users/jon/.rvm/rubies/ruby-2.7.3/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
4: from /Users/jon/.rvm/gems/ruby-2.7.3/bundler/gems/rails-b678667853b4/railties/lib/rails/initializable.rb:61:in `block in run_initializers'
3: from /Users/jon/.rvm/gems/ruby-2.7.3/bundler/gems/rails-b678667853b4/railties/lib/rails/initializable.rb:32:in `run'
2: from /Users/jon/.rvm/gems/ruby-2.7.3/bundler/gems/rails-b678667853b4/railties/lib/rails/initializable.rb:32:in `instance_exec'
1: from /Users/jon/.rvm/gems/ruby-2.7.3/bundler/gems/rails-b678667853b4/railties/lib/rails/engine.rb:588:in `block in <class:Engine>'
/Users/jon/.rvm/gems/ruby-2.7.3/bundler/gems/rails-b678667853b4/railties/lib/rails/engine.rb:588:in `unshift'
FrozenError (can't modify frozen Array: [])
i also found the same behavior when instantiating and initializing instances of two different classes.
a bisect gave me 0d523d8 as the first bad commit which is where zeitwerk becomes the default autoloader.
i found that in 6.1.3.2 i could get a similar error by enabling zeitwerk
require "action_controller/railtie"
class App < Rails::Application; end
App.config.autoloader = :zeitwerk
a = App.new
a.config.autoloader = :zeitwerk
a.initialize!
b = App.new
b.config.autoloader = :zeitwerk
b.initialize!
System configuration
Rails version:
b678667
6.1.3.2
6.0.3.7
Ruby version:
ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-darwin20]
Steps to reproduce
initialize a rails app twice:
Expected behavior
no errors should be raised - this is the case on
6.0.3.7and6.1.3.2with default configsActual behavior
on
maini get this error:i also found the same behavior when instantiating and initializing instances of two different classes.
a bisect gave me 0d523d8 as the first bad commit which is where
zeitwerkbecomes the default autoloader.i found that in
6.1.3.2i could get a similar error by enablingzeitwerkSystem configuration
Rails version:
b678667
6.1.3.26.0.3.7Ruby version:
ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-darwin20]