Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

live reload with Ruby 3.1.0 causes uninitialized class variable @@direct_descendants in ActiveSupport::DescendantsTracker #484

Closed
monfresh opened this issue Jan 17, 2022 · 6 comments
Assignees
Labels
bug Something isn't working high priority This should get addressed as soon as possible.

Comments

@monfresh
Copy link

Live reload causes this same exception every time on a brand new bridgetown site:

[Bridgetown]          Reloading… 1 file changed at 2022-01-16 20:02:48
[Bridgetown]                     - src/_posts/2022-01-16-welcome-to-bridgetown.md
[Bridgetown]   Exception raised: NameError
[Bridgetown] uninitialized class variable @@direct_descendants in ActiveSupport::DescendantsTracker

        ActiveSupport::DescendantsTracker.class_variable_get(
                                         ^^^^^^^^^^^^^^^^^^^
[Bridgetown]                  1: /Users/moncef/.gem/ruby/3.1.0/gems/bridgetown-core-1.0.0.beta1/lib/bridgetown-core/utils/loaders_manager.rb:36:in `class_variable_get'
[Bridgetown]                  2: /Users/moncef/.gem/ruby/3.1.0/gems/bridgetown-core-1.0.0.beta1/lib/bridgetown-core/utils/loaders_manager.rb:36:in `clear_descendants_for_reload'
[Bridgetown]                  3: /Users/moncef/.gem/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:489:in `block in run_on_unload_callbacks'
[Bridgetown]                  4: /Users/moncef/.gem/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:489:in `each'
[Bridgetown]                  5: /Users/moncef/.gem/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:489:in `run_on_unload_callbacks'
[Bridgetown]                  6: /Users/moncef/.gem/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:149:in `block (2 levels) in unload'
[Bridgetown]                  7: /Users/moncef/.gem/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:146:in `each'
[Bridgetown]                  8: /Users/moncef/.gem/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:146:in `block in unload'
[Bridgetown]                  9: /Users/moncef/.gem/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:125:in `synchronize'
[Bridgetown]                 10: /Users/moncef/.gem/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:125:in `unload'
[Bridgetown]                 11: /Users/moncef/.gem/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:194:in `reload'
[Bridgetown]                 12: /Users/moncef/.gem/ruby/3.1.0/gems/bridgetown-core-1.0.0.beta1/lib/bridgetown-core/utils/loaders_manager.rb:76:in `block in reload_loaders'
[Bridgetown]                 13: /Users/moncef/.gem/ruby/3.1.0/gems/bridgetown-core-1.0.0.beta1/lib/bridgetown-core/utils/loaders_manager.rb:72:in `each'
[Bridgetown]                 14: /Users/moncef/.gem/ruby/3.1.0/gems/bridgetown-core-1.0.0.beta1/lib/bridgetown-core/utils/loaders_manager.rb:72:in `reload_loaders'
[Bridgetown]                 15: /Users/moncef/.gem/ruby/3.1.0/gems/bridgetown-core-1.0.0.beta1/lib/bridgetown-core/watcher.rb:83:in `block in reload_site'
[Bridgetown]                 16: /Users/moncef/.gem/ruby/3.1.0/gems/bridgetown-core-1.0.0.beta1/lib/bridgetown-core/watcher.rb:79:in `catch'
[Bridgetown]                 17: /Users/moncef/.gem/ruby/3.1.0/gems/bridgetown-core-1.0.0.beta1/lib/bridgetown-core/watcher.rb:79:in `reload_site'
[Bridgetown]                 18: /Users/moncef/.gem/ruby/3.1.0/gems/bridgetown-core-1.0.0.beta1/lib/bridgetown-core/watcher.rb:65:in `block in listen'
[Bridgetown]                 19: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/event/config.rb:28:in `call'
[Bridgetown]                 20: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/event/processor.rb:117:in `block in _process_changes'
[Bridgetown]                 21: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/thread.rb:26:in `rescue_and_log'
[Bridgetown]                 22: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/event/processor.rb:116:in `_process_changes'
[Bridgetown]                 23: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/event/processor.rb:25:in `block in loop_for'
[Bridgetown]                 24: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/event/processor.rb:20:in `loop'
[Bridgetown]                 25: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/event/processor.rb:20:in `loop_for'
[Bridgetown]                 26: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/event/loop.rb:85:in `_process_changes'
[Bridgetown]                 27: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/event/loop.rb:51:in `block in start'
[Bridgetown]                 28: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/thread.rb:26:in `rescue_and_log'
[Bridgetown]                 29: /Users/moncef/.gem/ruby/3.1.0/gems/listen-3.7.1/lib/listen/thread.rb:18:in `block in new'
[Bridgetown]

Bridgetown Version:
1.0.0.beta1

To Reproduce

  1. chruby 3.1.0
  2. gem install -v 1.0.0.beta1 bridgetown
  3. bridgetown new mysite
  4. cd mysite
  5. bin/bridgetown start
  6. Make a change to 2022-01-16-welcome-to-bridgetown.md or any file that would trigger a live reload

Current behavior

The change doesn't appear, even after a browser refresh. Instead, the error pasted above appears in the terminal every time live reload gets triggered.

Expected behavior

No error, and the updated content gets live reloaded in the browser.

Screenshots

Computing environment (please complete the following information):

  • OS: macOS 12.1 (Monterey)
  • Browser: Safari
  • Browser Version: 15.2
  • Ruby Version: 3.1.0

Additional context

@monfresh monfresh added the bug Something isn't working label Jan 17, 2022
@monfresh
Copy link
Author

This seems to be specific to Ruby 3.1.0. I cannot reproduce with 3.0.3.

@monfresh monfresh changed the title every time a reload is triggered: uninitialized class variable @@direct_descendants in ActiveSupport::DescendantsTracker live reload with Ruby 3.1.0 causes uninitialized class variable @@direct_descendants in ActiveSupport::DescendantsTracker Jan 17, 2022
@jaredcwhite jaredcwhite added the high priority This should get addressed as soon as possible. label Jan 17, 2022
@jaredcwhite jaredcwhite self-assigned this Jan 17, 2022
@jaredcwhite
Copy link
Member

Can confirm, it seems specific to Ruby 3.1 and a related refactoring in Active Support v7. Thanks for the report @monfresh.

@KonnorRogers
Copy link
Member

I'm still getting this in Ruby 3.0.4 with a fresh install of 1.3.1.

MacOS: Ventura 13.2
Ruby: 3.0.4
Bridgetown Version: 1.3.1

Error Message:

Reloading… 1 file changed at 2023-10-27 01:18:48
[Bridgetown]                     - src/schema.json
[Bridgetown]   Exception raised: NameError
[Bridgetown] uninitialized class variable @@direct_descendants in ActiveSupport::DescendantsTracker
Did you mean?  @direct_descendants
[Bridgetown]                  1: /Users/konnor/.asdf/installs/ruby/3.0.4/lib/ruby/gems/3.0.0/gems/bridgetown-core-1.3.1/lib/bridgetown-c
ore/utils/loaders_manager.rb:44:in `class_variable_get'
[Bridgetown]                  2: /Users/konnor/.asdf/installs/ruby/3.0.4/lib/ruby/gems/3.0.0/gems/bridgetown-core-1.3.1/lib/bridgetown-c
ore/utils/loaders_manager.rb:44:in `clear_descendants_for_reload'
[Bridgetown]                  3: /Users/konnor/.asdf/installs/ruby/3.0.4/lib/ruby/gems/3.0.0/gems/zeitwerk-2.6.12/lib/zeitwerk/loader.rb
:555:in `block in run_on_unload_callbacks'
[Bridgetown]                  4: /Users/konnor/.asdf/installs/ruby/3.0.4/lib/ruby/gems/3.0.0/gems/zeitwerk-2.6.12/lib/zeitwerk/loader.rb
:555:in `each'
[Bridgetown]                  5: /Users/konnor/.asdf/installs/ruby/3.0.4/lib/ruby/gems/3.0.0/gems/zeitwerk-2.6.12/lib/zeitwerk/loader.rb
:555:in `run_on_unload_callbacks'
[Bridgetown]          Backtrace: Use the --trace option for complete information.
[Bridgetown]

@KonnorRogers
Copy link
Member

Fixed by upgrading to Ruby 3.1.2

@monfresh
Copy link
Author

If you're using Ruby 3.1, I recommend upgrading to 3.1.4, which is the latest in the 3.1.x series. There's rarely a good reason to use a version less than the latest one in a given series. endoflife.date is good site for finding the latest versions for each release.

For more details on the reasoning behind this, check out my article:
https://www.rubyonmac.dev/how-to-upgrade-the-ruby-version-in-your-project

@KonnorRogers
Copy link
Member

@monfresh i was mostly just impatient and it was the latest I had installed on my machine. I ended up compiling and building 3.1.4 with ASDF earlier today.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working high priority This should get addressed as soon as possible.
Projects
None yet
Development

No branches or pull requests

3 participants