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

Bring back Mongoid official support #5568

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft

Conversation

carlosantoniodasilva
Copy link
Member

@carlosantoniodasilva carlosantoniodasilva commented Mar 8, 2023

Devise hasn't been tested with Mongoid since Rails version 5, only 4.x was still running those tests.

This enables the tests again on all currently supported Rails versions, with their respective mongoid supported versions. There were a couple of minor tweaks to make it happen, namely:

  • The way we were dropping the session before doesn't work in later versions so I changed back to calling purge! which appears to work fine. We used to call Mongoid.purge! but that changed in Fix mongoid test failed problem #4686.
  • Some of the configs in the Rails test app were setting Active Record values when outside of the AR ORM tests, updated those to make sure they are not set when running mongoid ORM tests.
  • The validations added to the shared admin code in tests were only checking for Rails version 5.1, but we need to use the same check for AR 5.1 that is used in code, otherwise it will try to use methods not available in mongoid there.

I also had to lock the sqlite3 gem on Rails 6 versions to 1.5.x, due to it dropping support to Ruby 2.6 on v1.6+ now, and those Rails 6 versions need to support that Ruby version.

Finally, I locked mongoid to v7.5+ but not allowing v8+ yet, there seems to be some change to dirty attributes that I need to look into which is making a handful of tests fail. For now, this should hopefully get us to green as step 1. I got Mongoid v8.0 working with a couple of tweaks to dirty tracking, hopefully that's all that's needed.

Devise hasn't been tested with Mongoid since Rails version 5, only 4.x
was still running those tests.

This enables the tests again on all currently supported Rails versions,
with their respective mongoid supported versions. There were a couple of
minor tweaks to make it happen, namely:

* The way we were dropping the session before doesn't work in later
  versions so I changed back to calling `purge!` which appears to
  work fine. We used to call `Mongoid.purge!` but that changed in #4686.
* Some of the configs in the Rails test app were setting Active Record
  values when outside of the AR ORM tests, updated those to make sure
  they are not set when running mongoid ORM tests.
* The validations added to the shared admin code in tests were only
  checking for Rails version 5.1, but we need to use the same check for
  AR 5.1 that is used in code, otherwise it will try to use methods not
  available in mongoid there.

I also had to lock the sqlite3 gem on Rails 6 versions to 1.5.x, due to
it dropping support to Ruby 2.6 on v1.6+ now, and those Rails 6 versions
need to support that Ruby version.

Finally, I locked mongoid to v7.5+ but not allowing v8+ yet, there seems
to be some change to dirty attributes that I need to look into which is
making a handful of tests fail. For now, this should hopefully get us to
green as step 1.
It appears Mongoid 8.0+ slightly [changed dirty tracking] behavior to
more closely match Active Model/Record, however they haven't yet
introduced the [new methods] that match the latest API, that seems to be
coming on Mongoid 8.1 only.

The changes here try to accommodate for that by determining which
"attribute_changed?" method to call depending on whether the
"*_previously_*" version exists. Newer versions of AR (5.1+) will
continue to use the new API / methods, whereas previous versions and
Mongoid 8.0+ will use these tweaked versions. No behavior should change
for AR, but it will hopefully support Mongoid 8.0+ now.

[changed dirty tracking]
mongodb/mongoid#5092

[new methods]
mongodb/mongoid#5440
Now that Mongoid has released new versions of 8.1 which contain the
changes we rely on for dirty tracking, we can just point our Gemfile to
their released versions for testing against them.

Also update Rails and related dependencies to latest in the process, to
make sure they all match together. (Mongoid v8.1.2 didn't allow Rails 7.1
for instance, only v8.1.3+)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

1 participant