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

Commits on Apr 10, 2024

  1. Reenable tests with mongoid on Rails 5 and up

    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.
    carlosantoniodasilva committed Apr 10, 2024
    Configuration menu
    Copy the full SHA
    a0c1443 View commit details
    Browse the repository at this point in the history
  2. Update dirty tracking to support Mongoid 8.0+

    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
    carlosantoniodasilva committed Apr 10, 2024
    Configuration menu
    Copy the full SHA
    a2f1d29 View commit details
    Browse the repository at this point in the history
  3. Point to the latest release of mongoid instead of 8-1 branch

    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+)
    carlosantoniodasilva committed Apr 10, 2024
    Configuration menu
    Copy the full SHA
    d18d6d8 View commit details
    Browse the repository at this point in the history