From 6d816f220d0a0e8d5224ba43a0704aa9a23b83c8 Mon Sep 17 00:00:00 2001 From: Dmitry Rybakov Date: Tue, 1 Oct 2024 17:28:54 +0200 Subject: [PATCH 1/5] MONGOID-5818 Rails 8 support --- .evergreen/config.yml | 17 +++++++++++++++++ .evergreen/config/axes.yml.erb | 4 ++++ .evergreen/config/variants.yml.erb | 13 +++++++++++++ gemfiles/rails-8.0.gemfile | 11 +++++++++++ mongoid.gemspec | 2 +- 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 gemfiles/rails-8.0.gemfile diff --git a/.evergreen/config.yml b/.evergreen/config.yml index f804a21de8..2da948106f 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -586,6 +586,10 @@ axes: display_name: "Rails 7.2" variables: RAILS: "7.2" + - id: "8.0" + display_name: "Rails 8.0" + variables: + RAILS: "8.0" - id: "test-i18n-fallbacks" display_name: Test i18n fallbacks @@ -727,6 +731,19 @@ buildvariants: tasks: - name: "test" +- matrix_name: "rails-8" + matrix_spec: + ruby: ["ruby-3.2"] + driver: ["current"] + mongodb-version: "7.0" + topology: "standalone" + rails: ['8.0'] + os: ubuntu-22.04 + fle: helper + display_name: "${rails}, ${driver}, ${mongodb-version} (FLE ${fle})" + tasks: + - name: "test" + - matrix_name: "bson-min" matrix_spec: driver: [bson-min] diff --git a/.evergreen/config/axes.yml.erb b/.evergreen/config/axes.yml.erb index e654086105..546225f54b 100644 --- a/.evergreen/config/axes.yml.erb +++ b/.evergreen/config/axes.yml.erb @@ -213,6 +213,10 @@ axes: display_name: "Rails 7.2" variables: RAILS: "7.2" + - id: "8.0" + display_name: "Rails 8.0" + variables: + RAILS: "8.0" - id: "test-i18n-fallbacks" display_name: Test i18n fallbacks diff --git a/.evergreen/config/variants.yml.erb b/.evergreen/config/variants.yml.erb index 1911f8c902..1c4f71eeaa 100644 --- a/.evergreen/config/variants.yml.erb +++ b/.evergreen/config/variants.yml.erb @@ -111,6 +111,19 @@ buildvariants: tasks: - name: "test" +- matrix_name: "rails-8" + matrix_spec: + ruby: ["ruby-3.2"] + driver: ["current"] + mongodb-version: "7.0" + topology: "standalone" + rails: ['8.0'] + os: ubuntu-22.04 + fle: helper + display_name: "${rails}, ${driver}, ${mongodb-version} (FLE ${fle})" + tasks: + - name: "test" + - matrix_name: "bson-min" matrix_spec: driver: [bson-min] diff --git a/gemfiles/rails-8.0.gemfile b/gemfiles/rails-8.0.gemfile new file mode 100644 index 0000000000..ff6de8504c --- /dev/null +++ b/gemfiles/rails-8.0.gemfile @@ -0,0 +1,11 @@ +# rubocop:todo all +source 'https://rubygems.org' + +gem 'actionpack', '~> 8.0' +gem 'activemodel', '~> 8.0' + +gemspec path: '..' + +require_relative './standard' + +standard_dependencies diff --git a/mongoid.gemspec b/mongoid.gemspec index 91eab31938..0c8fb6b4e9 100644 --- a/mongoid.gemspec +++ b/mongoid.gemspec @@ -38,7 +38,7 @@ Gem::Specification.new do |s| # Ruby 3.0 requires ActiveModel 6.0 or higher. # activemodel 7.0.0 cannot be used due to Class#descendants issue # See: https://github.com/rails/rails/pull/43951 - s.add_dependency("activemodel", ['>=5.1', '<7.3', '!= 7.0.0']) + s.add_dependency("activemodel", ['>=5.1', '<8.1', '!= 7.0.0']) s.add_dependency("mongo", ['>=2.18.0', '<3.0.0']) s.add_dependency("concurrent-ruby", ['>= 1.0.5', '< 2.0']) From 96d7f3abb09f657bbe13a785e185b707b7931046 Mon Sep 17 00:00:00 2001 From: Dmitry Rybakov Date: Tue, 1 Oct 2024 22:22:54 +0200 Subject: [PATCH 2/5] Fix Rails 8 version --- gemfiles/rails-8.0.gemfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gemfiles/rails-8.0.gemfile b/gemfiles/rails-8.0.gemfile index ff6de8504c..175a1135ec 100644 --- a/gemfiles/rails-8.0.gemfile +++ b/gemfiles/rails-8.0.gemfile @@ -1,8 +1,8 @@ # rubocop:todo all source 'https://rubygems.org' -gem 'actionpack', '~> 8.0' -gem 'activemodel', '~> 8.0' +gem 'actionpack', '8.0.0.beta1' +gem 'activemodel', '8.0.0.beta1' gemspec path: '..' From cff5478c1db7e1c8cf88c721a5d2d06277fb2656 Mon Sep 17 00:00:00 2001 From: Dmitry Rybakov Date: Wed, 2 Oct 2024 15:57:24 +0200 Subject: [PATCH 3/5] Move activejob to version specific gemspecs --- gemfiles/rails-6.0.gemfile | 4 ++++ gemfiles/rails-6.1.gemfile | 3 +++ gemfiles/rails-7.0.gemfile | 3 +++ gemfiles/rails-7.1.gemfile | 3 +++ gemfiles/rails-7.2.gemfile | 3 +++ gemfiles/rails-8.0.gemfile | 3 +++ gemfiles/standard.rb | 1 - 7 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gemfiles/rails-6.0.gemfile b/gemfiles/rails-6.0.gemfile index c8962320a3..35923a605f 100644 --- a/gemfiles/rails-6.0.gemfile +++ b/gemfiles/rails-6.0.gemfile @@ -4,6 +4,10 @@ source 'https://rubygems.org' gem 'actionpack', '~> 6.0' gem 'activemodel', '~> 6.0' +group :test do + gem 'activejob', '~> 6.0' +end + gemspec path: '..' require_relative './standard' diff --git a/gemfiles/rails-6.1.gemfile b/gemfiles/rails-6.1.gemfile index 06a654ecd8..8e5a896766 100644 --- a/gemfiles/rails-6.1.gemfile +++ b/gemfiles/rails-6.1.gemfile @@ -4,6 +4,9 @@ source 'https://rubygems.org' gem 'actionpack', '~> 6.1' gem 'activemodel', '~> 6.1' +group :test do + gem 'activejob', '~> 6.1' +end gemspec path: '..' require_relative './standard' diff --git a/gemfiles/rails-7.0.gemfile b/gemfiles/rails-7.0.gemfile index c5bf14c395..5afbe8c57a 100644 --- a/gemfiles/rails-7.0.gemfile +++ b/gemfiles/rails-7.0.gemfile @@ -4,6 +4,9 @@ source 'https://rubygems.org' gem 'actionpack', '~> 7.0' gem 'activemodel', '~> 7.0' +group :test do + gem 'activejob', '~> 7.0' +end gemspec path: '..' require_relative './standard' diff --git a/gemfiles/rails-7.1.gemfile b/gemfiles/rails-7.1.gemfile index 3b6debf9ec..3019a83ef3 100644 --- a/gemfiles/rails-7.1.gemfile +++ b/gemfiles/rails-7.1.gemfile @@ -4,6 +4,9 @@ source 'https://rubygems.org' gem 'actionpack', '~> 7.1' gem 'activemodel', '~> 7.1' +group :test do + gem 'activejob', '~> 7.1' +end gemspec path: '..' require_relative './standard' diff --git a/gemfiles/rails-7.2.gemfile b/gemfiles/rails-7.2.gemfile index bdc1062ec6..8319573653 100644 --- a/gemfiles/rails-7.2.gemfile +++ b/gemfiles/rails-7.2.gemfile @@ -4,6 +4,9 @@ source 'https://rubygems.org' gem 'actionpack', '~> 7.2' gem 'activemodel', '~> 7.2' +group :test do + gem 'activejob', '~> 7.2' +end gemspec path: '..' require_relative './standard' diff --git a/gemfiles/rails-8.0.gemfile b/gemfiles/rails-8.0.gemfile index 175a1135ec..b83e3108a5 100644 --- a/gemfiles/rails-8.0.gemfile +++ b/gemfiles/rails-8.0.gemfile @@ -4,6 +4,9 @@ source 'https://rubygems.org' gem 'actionpack', '8.0.0.beta1' gem 'activemodel', '8.0.0.beta1' +group :test do + gem 'activejob', '8.0.0.beta1' +end gemspec path: '..' require_relative './standard' diff --git a/gemfiles/standard.rb b/gemfiles/standard.rb index e89e2ae899..0285630e2e 100644 --- a/gemfiles/standard.rb +++ b/gemfiles/standard.rb @@ -36,7 +36,6 @@ def standard_dependencies end group :test do - gem 'activejob' gem 'timecop' gem 'rspec-retry' gem 'benchmark-ips' From f6e0fa8b2310b6ebffe351836ee03a38f3c1e504 Mon Sep 17 00:00:00 2001 From: Dmitry Rybakov Date: Wed, 2 Oct 2024 17:15:12 +0200 Subject: [PATCH 4/5] More tests --- .evergreen/config/variants.yml.erb | 34 ++++++++++++++++--- .evergreen/run-tests.sh | 2 +- gemfiles/rails-master.gemfile | 4 +++ .../bson_object_id_serializer_spec.rb | 10 ++++-- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/.evergreen/config/variants.yml.erb b/.evergreen/config/variants.yml.erb index 1c4f71eeaa..656d6ba49b 100644 --- a/.evergreen/config/variants.yml.erb +++ b/.evergreen/config/variants.yml.erb @@ -171,14 +171,40 @@ buildvariants: tasks: - name: "test" -- matrix_name: app-tests-rails-7 +- matrix_name: app-tests-rails-master matrix_spec: ruby: ["ruby-3.1", "ruby-3.2"] driver: ["current"] - mongodb-version: '6.0' + mongodb-version: '7.0' topology: standalone app-tests: yes - rails: ['6.1', '7.0', '7.1', '7.2'] + rails: ['master'] + os: ubuntu-20.04 + display_name: "app tests ${driver}, ${ruby}, ${rails}" + tasks: + - name: "test" + +- matrix_name: app-tests-rails-8 + matrix_spec: + ruby: ["ruby-3.1", "ruby-3.2"] + driver: ["current"] + mongodb-version: '7.0' + topology: standalone + app-tests: yes + rails: ['8.0'] + os: ubuntu-20.04 + display_name: "app tests ${driver}, ${ruby}, ${rails}" + tasks: + - name: "test" + +- matrix_name: app-tests-rails-7 + matrix_spec: + ruby: ["ruby-3.2"] + driver: ["current"] + mongodb-version: '7.0' + topology: standalone + app-tests: yes + rails: ['7.0', '7.1', '7.2'] os: ubuntu-20.04 display_name: "app tests ${driver}, ${ruby}, ${rails}" tasks: @@ -191,7 +217,7 @@ buildvariants: mongodb-version: '5.0' topology: standalone app-tests: yes - rails: ['6.0'] + rails: ['6.0', '6.1'] os: rhel80 display_name: "app tests ${driver}, ${ruby}, ${rails}" tasks: diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index ff5f5c1a3f..4ea2151a2f 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -123,6 +123,6 @@ if test -f tmp/rspec-all.json; then mv tmp/rspec-all.json tmp/rspec.json fi -python3 -m mtools.mlaunch.mlaunch stop --dir "$dbdir" +python3 -m mtools.mlaunch.mlaunch stop --dir "$dbdir" || true exit ${test_status} diff --git a/gemfiles/rails-master.gemfile b/gemfiles/rails-master.gemfile index 3dc51cbd13..e3a93d9c04 100644 --- a/gemfiles/rails-master.gemfile +++ b/gemfiles/rails-master.gemfile @@ -4,6 +4,10 @@ source 'https://rubygems.org' gem 'actionpack', git: 'https://github.com/rails/rails' gem 'activemodel', git: 'https://github.com/rails/rails' +group :test do + gem 'activejob', git: 'https://github.com/rails/rails' +end + gemspec path: '..' require_relative './standard' diff --git a/spec/mongoid/railties/bson_object_id_serializer_spec.rb b/spec/mongoid/railties/bson_object_id_serializer_spec.rb index 694e14232c..1ede20c34a 100644 --- a/spec/mongoid/railties/bson_object_id_serializer_spec.rb +++ b/spec/mongoid/railties/bson_object_id_serializer_spec.rb @@ -2,11 +2,17 @@ # rubocop:todo all require 'spec_helper' -require 'active_job' -require 'mongoid/railties/bson_object_id_serializer' +begin + require 'active_job' + require 'mongoid/railties/bson_object_id_serializer' +rescue LoadError + should_skip = true +end describe 'Mongoid::Railties::ActiveJobSerializers::BsonObjectIdSerializer' do + skip 'This test requires Rails version' if should_skip + let(:serializer) { Mongoid::Railties::ActiveJobSerializers::BsonObjectIdSerializer.instance } let(:object_id) { BSON::ObjectId.new } From 00c7ba4e9feb25618390fe246333d0271f60ced3 Mon Sep 17 00:00:00 2001 From: Dmitry Rybakov Date: Wed, 2 Oct 2024 17:38:02 +0200 Subject: [PATCH 5/5] 5818 --- .../railties/bson_object_id_serializer_spec.rb | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/spec/mongoid/railties/bson_object_id_serializer_spec.rb b/spec/mongoid/railties/bson_object_id_serializer_spec.rb index 1ede20c34a..9a446120f8 100644 --- a/spec/mongoid/railties/bson_object_id_serializer_spec.rb +++ b/spec/mongoid/railties/bson_object_id_serializer_spec.rb @@ -2,16 +2,12 @@ # rubocop:todo all require 'spec_helper' -begin - require 'active_job' - require 'mongoid/railties/bson_object_id_serializer' -rescue LoadError - should_skip = true -end +RSpec.context.skip 'This test requires Rails version specified' if ENV['RAILS'].nil? -describe 'Mongoid::Railties::ActiveJobSerializers::BsonObjectIdSerializer' do +require 'active_job' +require 'mongoid/railties/bson_object_id_serializer' - skip 'This test requires Rails version' if should_skip +describe 'Mongoid::Railties::ActiveJobSerializers::BsonObjectIdSerializer' do let(:serializer) { Mongoid::Railties::ActiveJobSerializers::BsonObjectIdSerializer.instance } let(:object_id) { BSON::ObjectId.new }