From 6cf2fa3e37f95ceecef218ed0210a23032dde611 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 8 Jan 2026 21:02:12 +0900 Subject: [PATCH 1/9] gemfiles: remove unused gemfiles --- gemfiles/rails_5_0.gemfile | 7 ------- gemfiles/rails_5_1.gemfile | 7 ------- 2 files changed, 14 deletions(-) delete mode 100644 gemfiles/rails_5_0.gemfile delete mode 100644 gemfiles/rails_5_1.gemfile diff --git a/gemfiles/rails_5_0.gemfile b/gemfiles/rails_5_0.gemfile deleted file mode 100644 index 123ad55..0000000 --- a/gemfiles/rails_5_0.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Appraisal - -source "https://rubygems.org" - -gem "rails", "~> 5.0.0" - -gemspec :path => "../" diff --git a/gemfiles/rails_5_1.gemfile b/gemfiles/rails_5_1.gemfile deleted file mode 100644 index 6100e83..0000000 --- a/gemfiles/rails_5_1.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Appraisal - -source "https://rubygems.org" - -gem "rails", "~> 5.1.0" - -gemspec path: "../" From 1074909f29671cf74581db00081e709a65190aa9 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 8 Jan 2026 19:50:56 +0900 Subject: [PATCH 2/9] github actions: update upload-artifact --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 64dc64a..b3b2633 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -70,7 +70,7 @@ jobs: - name: Run tests run: bundle exec rspec --profile 10 --format RspecJunitFormatter --out test_results/rspec.xml --format progress - name: Upload result - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: rspec_{{ matrix.rails-version }}-${{ matrix.database }}.xml From 11e0b8f34ba8337689d3914e1efa105b885adf61 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 8 Jan 2026 19:53:48 +0900 Subject: [PATCH 3/9] github actions: fix artifact name interpolation --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b3b2633..d56622b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -73,7 +73,7 @@ jobs: uses: actions/upload-artifact@v4 if: always() with: - name: rspec_{{ matrix.rails-version }}-${{ matrix.database }}.xml + name: rspec_${{ matrix.rails-version }}-${{ matrix.database }}.xml path: test_results/rspec.xml - name: Test Report uses: dorny/test-reporter@v1 From d0d35d5cbc9db5ea72aac5b1c5e35a23620dd7c2 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 8 Jan 2026 19:59:45 +0900 Subject: [PATCH 4/9] spec: explicity require ostruct for OpenStruct --- spec/unit/persistent_enum_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/unit/persistent_enum_spec.rb b/spec/unit/persistent_enum_spec.rb index 34f7842..6947c3b 100644 --- a/spec/unit/persistent_enum_spec.rb +++ b/spec/unit/persistent_enum_spec.rb @@ -4,6 +4,7 @@ require 'persistent_enum' require 'byebug' +require 'ostruct' require_relative '../spec_helper' From 9b9c86bc37c6ac30bf4158f9226a6fe4af9c72bd Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 8 Jan 2026 21:01:06 +0900 Subject: [PATCH 5/9] Use Rails 7.2 for rails 7.x test --- .github/workflows/test.yml | 6 +++--- Appraisals | 4 ++-- gemfiles/{rails_7_0.gemfile => rails_7_2.gemfile} | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) rename gemfiles/{rails_7_0.gemfile => rails_7_2.gemfile} (83%) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d56622b..3641da7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,7 +36,7 @@ jobs: strategy: fail-fast: false matrix: - rails-version: ['5.2', '6.1', '7.0'] + rails-version: ['5.2', '6.1', '7.2'] database: ['mysql', 'postgresql', 'sqlite'] include: - database: mysql @@ -51,9 +51,9 @@ jobs: - rails-version: '6.1' ruby-version: '3.0' bundle-gemfile: gemfiles/rails_6_1.gemfile - - rails-version: '7.0' + - rails-version: '7.2' ruby-version: '3.2' - bundle-gemfile: gemfiles/rails_7_0.gemfile + bundle-gemfile: gemfiles/rails_7_2.gemfile env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle-gemfile }} diff --git a/Appraisals b/Appraisals index 0054ee6..66ba928 100644 --- a/Appraisals +++ b/Appraisals @@ -6,6 +6,6 @@ appraise "rails-6-1" do gem "rails", "~> 6.1.0" end -appraise "rails-7-0" do - gem "rails", "~> 7.0.0" +appraise "rails-7-2" do + gem "rails", "~> 7.2.0" end diff --git a/gemfiles/rails_7_0.gemfile b/gemfiles/rails_7_2.gemfile similarity index 83% rename from gemfiles/rails_7_0.gemfile rename to gemfiles/rails_7_2.gemfile index e3ee0a3..0944bb4 100644 --- a/gemfiles/rails_7_0.gemfile +++ b/gemfiles/rails_7_2.gemfile @@ -3,6 +3,6 @@ source "https://rubygems.org" gem "rspec_junit_formatter" -gem "rails", "~> 7.0.0" +gem "rails", "~> 7.2.0" gemspec path: "../" From 943f954d5efa69e10efe12c7a64bb212933fd537 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 8 Jan 2026 19:47:39 +0900 Subject: [PATCH 6/9] Test on Rails 8 --- .github/workflows/test.yml | 5 ++++- Appraisals | 4 ++++ gemfiles/rails_8_1.gemfile | 8 ++++++++ persistent_enum.gemspec | 4 ++-- 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 gemfiles/rails_8_1.gemfile diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3641da7..aed275b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,7 +36,7 @@ jobs: strategy: fail-fast: false matrix: - rails-version: ['5.2', '6.1', '7.2'] + rails-version: ['5.2', '6.1', '7.2', '8.1'] database: ['mysql', 'postgresql', 'sqlite'] include: - database: mysql @@ -54,6 +54,9 @@ jobs: - rails-version: '7.2' ruby-version: '3.2' bundle-gemfile: gemfiles/rails_7_2.gemfile + - rails-version: '8.1' + ruby-version: '4.0' + bundle-gemfile: gemfiles/rails_8_1.gemfile env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle-gemfile }} diff --git a/Appraisals b/Appraisals index 66ba928..592592b 100644 --- a/Appraisals +++ b/Appraisals @@ -9,3 +9,7 @@ end appraise "rails-7-2" do gem "rails", "~> 7.2.0" end + +appraise "rails-8-1" do + gem "rails", "~> 8.1.0" +end diff --git a/gemfiles/rails_8_1.gemfile b/gemfiles/rails_8_1.gemfile new file mode 100644 index 0000000..6a7b0f7 --- /dev/null +++ b/gemfiles/rails_8_1.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rspec_junit_formatter" +gem "rails", "~> 8.1.0" + +gemspec path: "../" diff --git a/persistent_enum.gemspec b/persistent_enum.gemspec index 11016c7..3d971ef 100644 --- a/persistent_enum.gemspec +++ b/persistent_enum.gemspec @@ -18,8 +18,8 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ['lib'] - spec.add_dependency 'activerecord', '>= 5.0', '< 8' - spec.add_dependency 'activesupport', '>= 5.0', '< 8' + spec.add_dependency 'activerecord', '>= 5.0', '< 9' + spec.add_dependency 'activesupport', '>= 5.0', '< 9' spec.add_dependency 'activerecord-import' From 07c362bf1c8de4e981de8169af76c4def4bea698 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 8 Jan 2026 21:14:36 +0900 Subject: [PATCH 7/9] gemspec: ensure ostruct is available --- persistent_enum.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/persistent_enum.gemspec b/persistent_enum.gemspec index 3d971ef..9d01469 100644 --- a/persistent_enum.gemspec +++ b/persistent_enum.gemspec @@ -29,6 +29,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'appraisal' spec.add_development_dependency 'mysql2' + spec.add_development_dependency 'ostruct' spec.add_development_dependency 'pg' spec.add_development_dependency 'sqlite3' From b0b9d44db385baa87c19a29889f28f6e2737c59f Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 8 Jan 2026 21:42:39 +0900 Subject: [PATCH 8/9] database_helper: work around Rails 6.x bug --- spec/support/helpers/database_helper.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/support/helpers/database_helper.rb b/spec/support/helpers/database_helper.rb index e2a233d..116989b 100644 --- a/spec/support/helpers/database_helper.rb +++ b/spec/support/helpers/database_helper.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +# Work around Rails 6.x bug where "logger" is used without being imported +require 'logger' + require 'yaml' require 'active_record' From b84be85495d89e287cb736565dcd96771c1a3223 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 8 Jan 2026 21:49:07 +0900 Subject: [PATCH 9/9] Appraisals: match sqlite gem versions to active record --- Appraisals | 4 ++++ gemfiles/rails_5_2.gemfile | 1 + gemfiles/rails_6_1.gemfile | 1 + gemfiles/rails_7_2.gemfile | 1 + gemfiles/rails_8_1.gemfile | 1 + 5 files changed, 8 insertions(+) diff --git a/Appraisals b/Appraisals index 592592b..d8c0573 100644 --- a/Appraisals +++ b/Appraisals @@ -1,15 +1,19 @@ appraise "rails-5-2" do gem "rails", "~> 5.2.0" + gem "sqlite3", "~> 1.3", ">= 1.3.6" end appraise "rails-6-1" do gem "rails", "~> 6.1.0" + gem "sqlite3", "~> 1.4" end appraise "rails-7-2" do gem "rails", "~> 7.2.0" + gem "sqlite3", ">= 1.4" end appraise "rails-8-1" do gem "rails", "~> 8.1.0" + gem "sqlite3", ">= 2.1" end diff --git a/gemfiles/rails_5_2.gemfile b/gemfiles/rails_5_2.gemfile index ae2dbab..0d9c9bd 100644 --- a/gemfiles/rails_5_2.gemfile +++ b/gemfiles/rails_5_2.gemfile @@ -4,5 +4,6 @@ source "https://rubygems.org" gem "rspec_junit_formatter" gem "rails", "~> 5.2.0" +gem "sqlite3", "~> 1.3", ">= 1.3.6" gemspec path: "../" diff --git a/gemfiles/rails_6_1.gemfile b/gemfiles/rails_6_1.gemfile index 6bd8237..9f4c323 100644 --- a/gemfiles/rails_6_1.gemfile +++ b/gemfiles/rails_6_1.gemfile @@ -4,5 +4,6 @@ source "https://rubygems.org" gem "rspec_junit_formatter" gem "rails", "~> 6.1.0" +gem "sqlite3", "~> 1.4" gemspec path: "../" diff --git a/gemfiles/rails_7_2.gemfile b/gemfiles/rails_7_2.gemfile index 0944bb4..b81cbb3 100644 --- a/gemfiles/rails_7_2.gemfile +++ b/gemfiles/rails_7_2.gemfile @@ -4,5 +4,6 @@ source "https://rubygems.org" gem "rspec_junit_formatter" gem "rails", "~> 7.2.0" +gem "sqlite3", ">= 1.4" gemspec path: "../" diff --git a/gemfiles/rails_8_1.gemfile b/gemfiles/rails_8_1.gemfile index 6a7b0f7..6bf6fc0 100644 --- a/gemfiles/rails_8_1.gemfile +++ b/gemfiles/rails_8_1.gemfile @@ -4,5 +4,6 @@ source "https://rubygems.org" gem "rspec_junit_formatter" gem "rails", "~> 8.1.0" +gem "sqlite3", ">= 2.1" gemspec path: "../"