Skip to content

Commit

Permalink
Add support for Rails 7.1 and 7.2
Browse files Browse the repository at this point in the history
  • Loading branch information
olivier-thatch committed Sep 1, 2024
1 parent 68b991d commit 7bbf7a2
Show file tree
Hide file tree
Showing 11 changed files with 101 additions and 12 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test_suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
fail-fast: false
matrix:
orm: [active_record, mongoid]
rails: ["7.0"]
rails: ["7.0", "7.1", "7.2"]
ruby: ["3.1", "3.2", "3.3", head]
env:
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.gemfile
Expand Down
10 changes: 10 additions & 0 deletions Appraisals
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,13 @@ appraise 'rails-7.0' do
gem 'railties', '~> 7.0.1' # Rails 7.0.0 and Ruby 3.1 are incompatible. See https://github.com/rails/rails/issues/43998 and https://github.com/rails/rails/pull/43951
gem 'minitest-rails', '~> 7.0.0'
end

appraise 'rails-7.1' do
gem 'railties', '~> 7.1.0'
gem 'minitest-rails', '~> 7.1.0'
end

appraise 'rails-7.2' do
gem 'railties', '~> 7.2.0'
gem 'minitest-rails', '~> 7.1.0'
end
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ PATH
remote: .
specs:
devise-security (0.18.0)
devise (>= 4.3.0)
devise (>= 4.8.1)

GEM
remote: https://rubygems.org/
Expand Down
2 changes: 1 addition & 1 deletion gemfiles/rails_7.0.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
source "https://rubygems.org"

gem "minitest-rails", "~> 7.0.0"
gem "railties", "~> 7.0.0"
gem "railties", "~> 7.0.1"
gem "bigdecimal", require: false
gem "drb", require: false

Expand Down
27 changes: 27 additions & 0 deletions gemfiles/rails_7.1.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "minitest-rails", "~> 7.1.0"
gem "railties", "~> 7.1.0"
gem "bigdecimal", require: false
gem "drb", require: false

group :active_record do
gem "pg"
gem "sqlite3", "~> 1.4"
end

group :mongoid do
gem "mongoid", "~> 9.0"

group :test do
gem "database_cleaner-mongoid", "~> 2.0"
end
end

group :test do
gem "rails-controller-testing"
end

gemspec path: "../"
27 changes: 27 additions & 0 deletions gemfiles/rails_7.2.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "minitest-rails", "~> 7.1.0"
gem "railties", "~> 7.2.0"
gem "bigdecimal", require: false
gem "drb", require: false

group :active_record do
gem "pg"
gem "sqlite3", "~> 1.4"
end

group :mongoid do
gem "mongoid", github: "AlexKovynev/mongoid", branch: "Rails72Support"

group :test do
gem "database_cleaner-mongoid", "~> 2.0"
end
end

group :test do
gem "rails-controller-testing"
end

gemspec path: "../"
2 changes: 2 additions & 0 deletions test/dummy/config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

module RailsApp
class Application < Rails::Application
config.load_defaults 7.0

config.encoding = 'utf-8'

config.filter_parameters += [:password]
Expand Down
7 changes: 5 additions & 2 deletions test/dummy/config/environments/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@

config.active_support.test_order = :sorted
config.log_level = :debug
config.active_record.legacy_connection_handling = false
end
ActiveSupport::Deprecation.debug = true
if Gem::Version.new(Rails.version) < Gem::Version.new('7.1')
ActiveSupport::Deprecation.debug = true
else
Rails.application.deprecators.debug = true
end
2 changes: 1 addition & 1 deletion test/orm/active_record.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
ActiveRecord::Migration.verbose = false
ActiveRecord::Base.logger = Logger.new(nil)

ActiveRecord::MigrationContext.new(File.expand_path('../dummy/db/migrate', __dir__), ActiveRecord::SchemaMigration).migrate
ActiveRecord::MigrationContext.new(File.expand_path('../dummy/db/migrate', __dir__)).migrate

DatabaseCleaner[:active_record].strategy = :transaction
ORMInvalidRecordException = ActiveRecord::RecordInvalid
21 changes: 21 additions & 0 deletions test/support/helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,26 @@ def generate_unique_username
def generate_unique_email
"#{generate_unique_username}@example.com"
end

def with_deprecation_behavior(behavior)
rails_71_and_up = Gem::Version.new(Rails.version) >= Gem::Version.new('7.1')
if rails_71_and_up
old_behavior = Rails.application.deprecators[DEVISE_ORM].behavior
Rails.application.deprecators.behavior = behavior
else
old_behavior = ActiveSupport::Deprecation.behavior
ActiveSupport::Deprecation.behavior = behavior
end

begin
yield
ensure
if rails_71_and_up
Rails.application.deprecators.behavior = old_behavior
else
ActiveSupport::Deprecation.behavior = old_behavior
end
end
end
end
end
11 changes: 5 additions & 6 deletions test/test_password_archivable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,11 @@ def set_password(user, password)
end

test 'indirectly saving associated user does not cause deprecation warning' do
old_behavior = ActiveSupport::Deprecation.behavior
ActiveSupport::Deprecation.behavior = :raise
user = User.new email: generate_unique_email, password: 'Password1', password_confirmation: 'Password1'
widget = Widget.new(user: user)
widget.save
ActiveSupport::Deprecation.behavior = old_behavior
with_deprecation_behavior(:raise) do
user = User.new email: generate_unique_email, password: 'Password1', password_confirmation: 'Password1'
widget = Widget.new(user: user)
assert_nothing_raised { widget.save }
end
end

test 'does not save an OldPassword if user password was originally nil' do
Expand Down

0 comments on commit 7bbf7a2

Please sign in to comment.