diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4c8ba86..fbbb2cf 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,15 +8,29 @@ jobs: strategy: matrix: - ruby: [ '2.6', '2.7', '3.0', 'ruby-head' ] - activerecord: [ '5.2.6', '6.1.4.1', '7.0.1' ] - exclude: + ruby: [ '3.0', '3.1', '3.2', '3.3', 'ruby-head' ] + activerecord: [ '6.1', '7.0', '7.1' ] # rails < 6 crashes on ruby 3 due to kwargs changes + include: + - ruby: '2.6' + activerecord: '5.2' - ruby: '2.6' - activerecord: '7.0.1' # rails 7 requires ruby >= 2.7 - - ruby: '3.0' - activerecord: '5.2.6' # rails < 6 crashes on ruby 3 due to kwargs changes + activerecord: '6.1' + # rails >= 7 requires ruby >= 2.7 + + - ruby: '2.7' + activerecord: '5.2' + - ruby: '2.7' + activerecord: '6.1' + - ruby: '2.7' + activerecord: '7.0' + - ruby: '2.7' + activerecord: '7.1' + exclude: + # rails < 7.1 crashes on ruby >= 3.4 due to the removal of mutex_m + - ruby: 'ruby-head' + activerecord: '6.1' - ruby: 'ruby-head' - activerecord: '5.2.6' # rails < 6 crashes on ruby 3 due to kwargs changes + activerecord: '7.0' steps: - uses: actions/checkout@v3 @@ -24,11 +38,18 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} - - name: Install dependencies + - name: Update RubyGems for Ruby 2 + run: | + gem install rubygems-update -v '< 3.5' && update_rubygems + if: matrix.ruby < '3.0' + - name: Update RubyGems for Ruby 3 run: | gem update --system + if: matrix.ruby >= '3.0' + - name: Install dependencies + run: | BUNDLE_GEMFILE=./gemfiles/activerecord_${{matrix.activerecord}}.gemfile bundle install --jobs 4 - name: Test with activerecord ${{matrix.activerecord}} run: BUNDLE_GEMFILE=./gemfiles/activerecord_${{matrix.activerecord}}.gemfile bundle exec rake - uses: codecov/codecov-action@v3 - if: matrix.ruby == '3.0' + if: matrix.ruby >= '3.0' diff --git a/Appraisals b/Appraisals index 7072f83..c152b77 100644 --- a/Appraisals +++ b/Appraisals @@ -1,14 +1,16 @@ # after changes, run `bundle exec appraisal install` %w[ - 5.2.6 - 6.1.4.1 - 7.0.1 + 5.2 + 6.1 + 7.0 + 7.1 ].each do |version| + constraint = [">= #{version}", "< #{version.sub(/\d+\z/, &:succ)}"] appraise "activerecord-#{version}" do - gem 'activerecord', version + gem 'activerecord', constraint group :development, :test do - gem 'rails', version + gem 'rails', constraint remove_gem 'appraisal' end end diff --git a/gemfiles/activerecord_5.2.6.gemfile b/gemfiles/activerecord_5.2.gemfile similarity index 62% rename from gemfiles/activerecord_5.2.6.gemfile rename to gemfiles/activerecord_5.2.gemfile index 650ea89..5ebf9af 100644 --- a/gemfiles/activerecord_5.2.6.gemfile +++ b/gemfiles/activerecord_5.2.gemfile @@ -2,10 +2,10 @@ source "https://rubygems.org" -gem "activerecord", "5.2.6" +gem "activerecord", [">= 5.2", "< 5.3"] group :development, :test do - gem "rails", "5.2.6" + gem "rails", [">= 5.2", "< 5.3"] end gemspec path: "../" diff --git a/gemfiles/activerecord_6.1.4.1.gemfile b/gemfiles/activerecord_6.1.gemfile similarity index 62% rename from gemfiles/activerecord_6.1.4.1.gemfile rename to gemfiles/activerecord_6.1.gemfile index c177bbd..4147381 100644 --- a/gemfiles/activerecord_6.1.4.1.gemfile +++ b/gemfiles/activerecord_6.1.gemfile @@ -2,10 +2,10 @@ source "https://rubygems.org" -gem "activerecord", "6.1.4.1" +gem "activerecord", [">= 6.1", "< 6.2"] group :development, :test do - gem "rails", "6.1.4.1" + gem "rails", [">= 6.1", "< 6.2"] end gemspec path: "../" diff --git a/gemfiles/activerecord_7.0.1.gemfile b/gemfiles/activerecord_7.0.gemfile similarity index 62% rename from gemfiles/activerecord_7.0.1.gemfile rename to gemfiles/activerecord_7.0.gemfile index a3439cf..7b2180c 100644 --- a/gemfiles/activerecord_7.0.1.gemfile +++ b/gemfiles/activerecord_7.0.gemfile @@ -2,10 +2,10 @@ source "https://rubygems.org" -gem "activerecord", "7.0.1" +gem "activerecord", [">= 7.0", "< 7.1"] group :development, :test do - gem "rails", "7.0.1" + gem "rails", [">= 7.0", "< 7.1"] end gemspec path: "../" diff --git a/gemfiles/activerecord_7.1.gemfile b/gemfiles/activerecord_7.1.gemfile new file mode 100644 index 0000000..554d329 --- /dev/null +++ b/gemfiles/activerecord_7.1.gemfile @@ -0,0 +1,11 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "activerecord", [">= 7.1", "< 7.2"] + +group :development, :test do + gem "rails", [">= 7.1", "< 7.2"] +end + +gemspec path: "../" diff --git a/spec/dummy_rails_app/config/application.rb b/spec/dummy_rails_app/config/application.rb index 55bef41..752ae6a 100644 --- a/spec/dummy_rails_app/config/application.rb +++ b/spec/dummy_rails_app/config/application.rb @@ -9,7 +9,9 @@ module DummyRailsApp class Application < Rails::Application # silence warning on rails 7 if (Rails::VERSION::MAJOR >= 7 rescue false) - config.active_record.legacy_connection_handling = false + if Rails::VERSION::MINOR == 0 + config.active_record.legacy_connection_handling = false + end end end end