Skip to content

Add support for Rails 8 #652

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

Closed
n-rodriguez opened this issue Nov 9, 2024 · 10 comments
Closed

Add support for Rails 8 #652

n-rodriguez opened this issue Nov 9, 2024 · 10 comments

Comments

@n-rodriguez
Copy link
Contributor

Hi there!

I've updated my app to Rails 8 and now got this error in CI :

     NoMethodError:
       undefined method `mobility_backend_class' for nil
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:192:in `backend_node'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:233:in `block (2 levels) in _build'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:232:in `map'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:232:in `block in _build'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:227:in `each'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:227:in `inject'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:227:in `_build'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:213:in `build'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:130:in `where!'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activerecord-8.0.0/lib/active_record/relation/query_methods.rb:1039:in `where'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/mobility-1.2.9/lib/mobility/plugins/active_record/query.rb:136:in `where'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/friendly_id-5.5.1/lib/friendly_id/finder_methods.rb:54:in `exists_by_friendly_id?'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/friendly_id-5.5.1/lib/friendly_id/slug_generator.rb:15:in `available?'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/friendly_id-5.5.1/lib/friendly_id/slug_generator.rb:19:in `block in generate'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/friendly_id-5.5.1/lib/friendly_id/candidates.rb:16:in `block in each'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/friendly_id-5.5.1/lib/friendly_id/candidates.rb:16:in `each'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/friendly_id-5.5.1/lib/friendly_id/candidates.rb:16:in `each'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/friendly_id-5.5.1/lib/friendly_id/slug_generator.rb:19:in `generate'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/friendly_id-5.5.1/lib/friendly_id/slugged.rb:357:in `set_slug'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/bundler/gems/friendly_id-mobility-45392451cdaf/lib/friendly_id/mobility.rb:53:in `set_slug'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:361:in `block in make_lambda'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:178:in `block in call'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:667:in `block (2 levels) in default_terminator'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:666:in `catch'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:666:in `block in default_terminator'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:179:in `call'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:558:in `block in invoke_before'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:558:in `each'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:558:in `invoke_before'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:108:in `run_callbacks'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activesupport-8.0.0/lib/active_support/callbacks.rb:912:in `_run_validation_callbacks'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activemodel-8.0.0/lib/active_model/validations/callbacks.rb:115:in `run_validations!'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activemodel-8.0.0/lib/active_model/validations.rb:365:in `valid?'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/gems/activerecord-8.0.0/lib/active_record/validations.rb:71:in `valid?'
     # /cache/nicolas/concerto/ruby-wip-rails8/ruby/3.3.0/bundler/gems/action_form-55bc53c7830b/lib/action_form/form_helpers.rb:21:in `valid?'
     # ./app/concepts/application_form.rb:8:in `call'

Thank you!

@aseroff
Copy link

aseroff commented Nov 15, 2024

Last blocker for a rails 8 upgrade...hope this issue gets attention soon.

@SebastienHugues
Copy link

Last blocker for me as well. @shioyama do you know when you will have some time to look at this issue? Thanks a lot! :-)

@leoluchini
Copy link

Hi guys! Is there any update on this issue? It's also blocking my Rails update. Thanks in advance

@shioyama
Copy link
Owner

shioyama commented Nov 26, 2024

Hi folks, I really don't have time to look into this, but poking for a few minutes I found that something has changed in AR internals such that @klass is no longer defined, klass seems to replace it though. Made a quick WIP PR, still some failures, but much less.

It would help if you could find out what happened in AR to trigger this. Mobility shouldn't be depending on AR internals, if possible would be good to fix this in a backwards compatible way (rather than adding a version conditional).

Update: maybe this.

@n-rodriguez
Copy link
Contributor Author

FYI partially fixed in #653

@shioyama
Copy link
Owner

Thanks @n-rodriguez ! Commented on #653

@shioyama
Copy link
Owner

There is a remaining more localized issue (not the @klass one) that I haven't had time to dig into. Let's try to ship the @klass fix to master so folks can point to that for now at least, which would work with Rails 8 for most stuff.

@shioyama
Copy link
Owner

Thanks to help from @n-rodriguez and @jukra a Rails 8-compatible version has been merged to master 🎉 Please give it a try.

I have a PR to finally release Mobility 1.3.0 with these changes this weekened, just give me some signs this works for folks.

Sorry for the delay! I don't use Mobility myself but I'd like to keep it running 🙂

@n-rodriguez
Copy link
Contributor Author

Please give it a try.

CI is green with my app. Thank you! 👍

@shioyama
Copy link
Owner

Released in 1.3.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants