diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f9942d6d..f852fc164 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,6 +45,8 @@ jobs: version: '6.0' - name: 'active_record' version: '6.1' + - name: 'active_record' + version: '7.0' - name: 'sequel' version: '5' experimental: [false] @@ -66,7 +68,7 @@ jobs: feature: 'rails' orm: name: 'active_record' - version: '6.1' + version: '7.0' database: 'sqlite3' experimental: false - ruby: '3.0' @@ -80,27 +82,27 @@ jobs: feature: 'unit' orm: name: 'active_record' - version: '7.0' + version: 'edge' experimental: true - ruby: '3.0' database: 'mysql' feature: 'unit' orm: name: 'active_record' - version: '7.0' + version: 'edge' experimental: true - ruby: '3.0' database: 'postgres' feature: 'unit' orm: name: 'active_record' - version: '7.0' + version: 'edge' experimental: true - ruby: '2.7' feature: 'rails' orm: name: 'active_record' - version: '6.1' + version: '7.0' database: 'sqlite3' experimental: false - ruby: '2.7' @@ -114,23 +116,27 @@ jobs: feature: 'unit' orm: name: 'active_record' - version: '7.0' + version: 'edge' experimental: true - ruby: '2.7' database: 'mysql' feature: 'unit' orm: name: 'active_record' - version: '7.0' + version: 'edge' experimental: true - ruby: '2.7' database: 'postgres' feature: 'unit' orm: name: 'active_record' - version: '7.0' + version: 'edge' experimental: true exclude: + - ruby: '2.6' + orm: + name: 'active_record' + version: '7.0' - ruby: '2.7' orm: name: 'active_record' @@ -188,9 +194,6 @@ jobs: - name: Install Postgres run: sudo apt-get install libpq-dev postgresql-client -y if: matrix.database == 'postgres' - - name: Install MySQL - run: sudo apt-get install libmysqlclient-dev mysql-client -y - if: matrix.database == 'mysql' - id: cache-bundler uses: actions/cache@v2 with: diff --git a/Gemfile b/Gemfile index cac693c84..68f2ded9b 100644 --- a/Gemfile +++ b/Gemfile @@ -8,11 +8,11 @@ orm, orm_version = ENV['ORM'], ENV['ORM_VERSION'] group :development, :test do case orm when 'active_record' - orm_version ||= '6.1' + orm_version ||= '7.0' case orm_version - when '4.2', '5.0', '5.1', '5.2', '6.0', '6.1' + when '4.2', '5.0', '5.1', '5.2', '6.0', '6.1', '7.0' gem 'activerecord', "~> #{orm_version}.0" - when '7.0' + when 'edge' git 'https://github.com/rails/rails.git', branch: 'main' do gem 'activerecord' gem 'activesupport' diff --git a/lib/mobility/plugins/active_model/dirty.rb b/lib/mobility/plugins/active_model/dirty.rb index 30bd26fc7..3cd13a79b 100644 --- a/lib/mobility/plugins/active_model/dirty.rb +++ b/lib/mobility/plugins/active_model/dirty.rb @@ -153,7 +153,13 @@ def #{method_name}(attr_name, *rest#{kwargs}) # suffixes is simplest given they change from Rails version to version. def patterns @patterns ||= - (klass.attribute_method_matchers.map { |p| "#{p.prefix}%s#{p.suffix}" } - excluded_patterns) + begin + # Method name changes in Rails 7.1 + attribute_method_patterns = klass.respond_to?(:attribute_method_patterns) ? + klass.attribute_method_patterns : + klass.attribute_method_matchers + attribute_method_patterns.map { |p| "#{p.prefix}%s#{p.suffix}" } - excluded_patterns + end end private