From 7a7400b09d1654117ce109ac3f9d0fc8a6c66a92 Mon Sep 17 00:00:00 2001 From: chaadow Date: Tue, 18 Jun 2024 00:46:30 +0100 Subject: [PATCH] Update appraisals and handle new ruby versions --- .github/workflows/ruby.yml | 4 ++-- Appraisals | 10 +++------- active_record-acts_as.gemspec | 6 ++---- gemfiles/rails_6.1.gemfile | 8 -------- gemfiles/rails_7.0.gemfile | 1 + gemfiles/{rails_6.0.gemfile => rails_7.1.gemfile} | 3 ++- lib/active_record/acts_as/class_methods.rb | 4 ++-- lib/active_record/acts_as/instance_methods.rb | 4 ++-- spec/actable_spec.rb | 2 +- 9 files changed, 15 insertions(+), 27 deletions(-) delete mode 100644 gemfiles/rails_6.1.gemfile rename gemfiles/{rails_6.0.gemfile => rails_7.1.gemfile} (72%) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 762f7fd..447284c 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -24,8 +24,8 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: ['2.7', '3.0', '3.1', '3.2'] - activerecord: ['6.0', '6.1', '7.0', 'main'] + ruby-version: ['3.1', '3.2', '3.3'] + activerecord: ['7.0', '7.1', 'main'] env: BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/rails_${{ matrix.activerecord }}.gemfile steps: diff --git a/Appraisals b/Appraisals index 05bf846..420256a 100644 --- a/Appraisals +++ b/Appraisals @@ -1,12 +1,8 @@ -appraise "rails-6.0" do - gem 'rails', '~> 6.0' -end - -appraise "rails-6.1" do - gem 'rails', '~> 6.1' +appraise "rails-7.0" do + gem 'rails', '~> 7.0' end -appraise "rails-7.0" do +appraise "rails-7.1" do gem 'rails', '~> 7.0' end diff --git a/active_record-acts_as.gemspec b/active_record-acts_as.gemspec index 4c6ffd3..3d374f3 100644 --- a/active_record-acts_as.gemspec +++ b/active_record-acts_as.gemspec @@ -19,18 +19,16 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.required_ruby_version = ">= 2.5" + spec.required_ruby_version = ">= 3.1" spec.add_development_dependency "sqlite3" spec.add_development_dependency "bundler" spec.add_development_dependency "rspec", "~> 3" - spec.add_development_dependency "psych", "3.3.2" spec.add_development_dependency "rake" - spec.add_development_dependency "appraisal", "~> 2.1" + spec.add_development_dependency "appraisal" spec.add_development_dependency "guard-rspec", "~> 4.7" spec.add_dependency "activesupport", ">= 6.0" spec.add_dependency "activerecord", ">= 6.0" - spec.add_dependency "ruby2_keywords" end diff --git a/gemfiles/rails_6.1.gemfile b/gemfiles/rails_6.1.gemfile deleted file mode 100644 index c66e7a3..0000000 --- a/gemfiles/rails_6.1.gemfile +++ /dev/null @@ -1,8 +0,0 @@ -# This file was generated by Appraisal - -source "https://rubygems.org" - -gem "coveralls", require: false -gem "rails", "~> 6.1" - -gemspec path: "../" diff --git a/gemfiles/rails_7.0.gemfile b/gemfiles/rails_7.0.gemfile index 06719d2..f92f4b5 100644 --- a/gemfiles/rails_7.0.gemfile +++ b/gemfiles/rails_7.0.gemfile @@ -4,5 +4,6 @@ source "https://rubygems.org" gem "coveralls", require: false gem "rails", "~> 7.0" +gem "sqlite3", "~> 1.4" gemspec path: "../" diff --git a/gemfiles/rails_6.0.gemfile b/gemfiles/rails_7.1.gemfile similarity index 72% rename from gemfiles/rails_6.0.gemfile rename to gemfiles/rails_7.1.gemfile index ea48f46..f92f4b5 100644 --- a/gemfiles/rails_6.0.gemfile +++ b/gemfiles/rails_7.1.gemfile @@ -3,6 +3,7 @@ source "https://rubygems.org" gem "coveralls", require: false -gem "rails", "~> 6.0" +gem "rails", "~> 7.0" +gem "sqlite3", "~> 1.4" gemspec path: "../" diff --git a/lib/active_record/acts_as/class_methods.rb b/lib/active_record/acts_as/class_methods.rb index 4cd82c5..13d81c1 100644 --- a/lib/active_record/acts_as/class_methods.rb +++ b/lib/active_record/acts_as/class_methods.rb @@ -23,9 +23,9 @@ def respond_to_missing?(method, include_private = false) acting_as_model.methods_callable_by_submodel.include?(method) || super end - ruby2_keywords def method_missing(method, *args, &block) + def method_missing(method, ...) if acting_as_model.methods_callable_by_submodel.include?(method) - result = acting_as_model.public_send(method, *args, &block) + result = acting_as_model.public_send(method, ...) if result.is_a?(ActiveRecord::Relation) all.joins(acting_as_name.to_sym).merge(result) else diff --git a/lib/active_record/acts_as/instance_methods.rb b/lib/active_record/acts_as/instance_methods.rb index 24153db..902c02f 100644 --- a/lib/active_record/acts_as/instance_methods.rb +++ b/lib/active_record/acts_as/instance_methods.rb @@ -117,9 +117,9 @@ def dup duplicate end - ruby2_keywords def method_missing(method, *args, &block) + def method_missing(method, ...) if !self_respond_to?(method) && acting_as.respond_to?(method) - acting_as.send(method, *args, &block) + acting_as.send(method, ...) else super end diff --git a/spec/actable_spec.rb b/spec/actable_spec.rb index 75515cc..f6cc82b 100644 --- a/spec/actable_spec.rb +++ b/spec/actable_spec.rb @@ -49,7 +49,7 @@ it "raises NoMethodError for undefined methods on specific" do pen.save - expect{ pen.product.raise_error }.to raise_error(NoMethodError, /undefined method `non_existant_method' for #