diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 8b81c83..081cdd4 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -23,7 +23,11 @@ jobs: include: - ruby-version: 2.7.5 appraisal: "7.0" + - ruby-version: 3.3.5 + appraisal: "8.0" exclude: + - ruby-version: 2.3.0 + appraisal: "4.0" - ruby-version: 2.3.0 appraisal: "4.2" - ruby-version: 2.3.0 @@ -46,6 +50,8 @@ jobs: appraisal: "4.1" - ruby-version: 2.5.5 appraisal: "4.2" + - ruby-version: 2.5.5 + appraisal: "5.2" - ruby-version: 2.6.3 appraisal: "3.2" - ruby-version: 2.6.3 @@ -62,12 +68,14 @@ jobs: with: ruby-version: ${{ matrix.ruby-version }} rubygems: default - bundler: none - - name: Install compatible bundler for all envs - run: gem install bundler -v 1.17.3 - - name: Bundle for Appraisal - run: bundle - - name: Install Appraisal dependencies - run: bundle exec appraisal ${{ matrix.appraisal }} bundle + bundler: "1.17.3" + - name: Remove default Gemfile + run: rm -f Gemfile + - name: Remove default Gemfile.lock + run: rm -f Gemfile.lock + - name: Set Gemfile + run: cp gemfiles/${{ matrix.appraisal }}.gemfile Gemfile + - name: Bundle + run: bundle install - name: Run tests - run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec rake test + run: bundle exec rake diff --git a/Appraisals b/Appraisals index d4ef896..224febc 100644 --- a/Appraisals +++ b/Appraisals @@ -3,36 +3,43 @@ appraise '3.2' do gem 'activerecord', '~> 3.2.0' gem 'i18n', '~> 0.6.5' + gem 'sqlite3', '~> 1.3.13' end appraise '4.0' do gem 'activerecord', '~> 4.0.0' gem 'i18n', '~> 0.6.5' + gem 'sqlite3', '~> 1.3.13' end appraise '4.1' do gem 'activerecord', '~> 4.1.0' gem 'i18n', '~> 0.6.9' + gem 'sqlite3', '~> 1.3.13' end appraise '4.2' do gem 'activerecord', '~> 4.2.3' gem 'i18n', '~> 0.7.0' + gem 'sqlite3', '~> 1.3.13' end appraise '5.0' do gem 'activerecord', '~> 5.0.0' gem 'i18n', '~> 0.7.0' + gem 'sqlite3', '~> 1.3.13' end appraise '5.1' do gem 'activerecord', '~> 5.1.0' gem 'i18n', '~> 0.7.0' + gem 'sqlite3', '~> 1.3.13' end appraise '5.2' do gem 'activerecord', '~> 5.2.0' gem 'i18n', '~> 0.7.0' + gem 'sqlite3', '~> 1.3.13' end appraise '6.0' do @@ -42,5 +49,9 @@ end appraise '7.0' do gem 'activerecord', '~> 7.0.0' - gem 'sqlite3', '~> 1.4.2' + gem 'sqlite3', '~> 1.4.1' +end + +appraise '8.0' do + gem 'activerecord', '~> 8.0.0' end diff --git a/CHANGELOG.md b/CHANGELOG.md index e2b994f..8143703 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] -## [3.2.0] - 2021-12-28 +## [3.2.0] - 2024-11-20 + +- Added Ruby 3.3.5 support +- Added Rails 8.0 support ### Added @@ -30,7 +33,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Fixed - Ensure the initial options hash is never modified -- When using conditions in combination with array includes, ensure nested includes are not accidentally deleted +- When using conditions in combination with array includes, ensure nested includes are not accidentally deleted ### Removed diff --git a/Gemfile b/Gemfile index caf4839..5d2139b 100644 --- a/Gemfile +++ b/Gemfile @@ -2,10 +2,10 @@ source 'http://rubygems.org' -gem 'activerecord', '>= 3.1.0', '< 8' -gem 'bundler', '~> 1.17.3', :group => :test +gem 'activerecord', '>= 3.1.0', '< 9' +gem 'bundler', :group => :test gem 'rake', '~> 12.3', :group => :test gem 'appraisal', :group => :test gem 'minitest', :group => :test -gem 'sqlite3', '~> 1.3.13', :group => :test +gem 'sqlite3', '~> 2.2', :group => :test diff --git a/Gemfile.lock b/Gemfile.lock index 5b26c58..f7d8f8d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,43 +1,60 @@ GEM remote: http://rubygems.org/ specs: - activemodel (5.2.0) - activesupport (= 5.2.0) - activerecord (5.2.0) - activemodel (= 5.2.0) - activesupport (= 5.2.0) - arel (>= 9.0) - activesupport (5.2.0) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - appraisal (2.2.0) + activemodel (8.0.0) + activesupport (= 8.0.0) + activerecord (8.0.0) + activemodel (= 8.0.0) + activesupport (= 8.0.0) + timeout (>= 0.4.0) + activesupport (8.0.0) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + appraisal (2.5.0) bundler rake thor (>= 0.14.0) - arel (9.0.0) - concurrent-ruby (1.0.5) - i18n (1.0.0) + base64 (0.2.0) + benchmark (0.4.0) + bigdecimal (3.1.8) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + drb (2.2.1) + i18n (1.14.6) concurrent-ruby (~> 1.0) - minitest (5.11.3) + logger (1.6.1) + mini_portile2 (2.8.7) + minitest (5.25.1) rake (12.3.3) - sqlite3 (1.3.13) - thor (0.20.3) - thread_safe (0.3.6) - tzinfo (1.2.10) - thread_safe (~> 0.1) + securerandom (0.3.2) + sqlite3 (2.2.0) + mini_portile2 (~> 2.8.0) + thor (1.3.2) + timeout (0.4.2) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + uri (1.0.2) PLATFORMS ruby DEPENDENCIES - activerecord (>= 3.1.0, < 8) + activerecord (>= 3.1.0, < 9) appraisal - bundler (~> 1.17.3) + bundler minitest rake (~> 12.3) - sqlite3 (~> 1.3.13) + sqlite3 (~> 2.2) BUNDLED WITH - 1.17.3 + 2.5.20 diff --git a/LICENSE b/LICENSE index 9f30726..c21776b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2021 Reinier de Lange +Copyright (c) 2024 Reinier de Lange Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/gemfiles/3.2.gemfile b/gemfiles/3.2.gemfile index dd89350..7b413d5 100644 --- a/gemfiles/3.2.gemfile +++ b/gemfiles/3.2.gemfile @@ -1,13 +1,9 @@ -# frozen_string_literal: true - # This file was generated by Appraisal -source 'http://rubygems.org' +source "http://rubygems.org" -gem 'activerecord', '~> 3.2.0' -gem 'appraisal', :group => :test -gem 'bundler', '~> 1.17.3', :group => :test -gem 'i18n', '~> 0.6.5' -gem 'minitest', :group => :test -gem 'rake', '~> 10.4', :group => :test -gem 'sqlite3', '~> 1.3.13', :group => :test +gem "activerecord", "~> 3.2.0" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 1.3.13", group: :test +gem "i18n", "~> 0.6.5", group: :test diff --git a/gemfiles/4.0.gemfile b/gemfiles/4.0.gemfile index 5b93197..d7a3f65 100644 --- a/gemfiles/4.0.gemfile +++ b/gemfiles/4.0.gemfile @@ -1,13 +1,9 @@ -# frozen_string_literal: true - # This file was generated by Appraisal -source 'http://rubygems.org' +source "http://rubygems.org" -gem 'activerecord', '~> 4.0.0' -gem 'appraisal', :group => :test -gem 'bundler', '~> 1.17.3', :group => :test -gem 'i18n', '~> 0.6.5' -gem 'minitest', :group => :test -gem 'rake', '~> 10.4', :group => :test -gem 'sqlite3', '~> 1.3.13', :group => :test +gem "activerecord", "~> 4.0.0" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 1.3.13", group: :test +gem "i18n", "~> 0.6.5", group: :test diff --git a/gemfiles/4.1.gemfile b/gemfiles/4.1.gemfile index 86996ec..abe6260 100644 --- a/gemfiles/4.1.gemfile +++ b/gemfiles/4.1.gemfile @@ -1,13 +1,9 @@ -# frozen_string_literal: true - # This file was generated by Appraisal -source 'http://rubygems.org' +source "http://rubygems.org" -gem 'activerecord', '~> 4.1.0' -gem 'appraisal', :group => :test -gem 'bundler', '~> 1.17.3', :group => :test -gem 'i18n', '~> 0.6.9' -gem 'minitest', :group => :test -gem 'rake', '~> 10.4', :group => :test -gem 'sqlite3', '~> 1.3.13', :group => :test +gem "activerecord", "~> 4.1.0" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 1.3.13", group: :test +gem "i18n", "~> 0.6.9", group: :test diff --git a/gemfiles/4.2.gemfile b/gemfiles/4.2.gemfile index dba0907..317940b 100644 --- a/gemfiles/4.2.gemfile +++ b/gemfiles/4.2.gemfile @@ -1,13 +1,9 @@ -# frozen_string_literal: true - # This file was generated by Appraisal -source 'http://rubygems.org' +source "http://rubygems.org" -gem 'activerecord', '~> 4.2.3' -gem 'appraisal', :group => :test -gem 'bundler', '~> 1.17.3', :group => :test -gem 'i18n', '~> 0.7.0' -gem 'minitest', :group => :test -gem 'rake', '~> 10.4', :group => :test -gem 'sqlite3', '~> 1.3.13', :group => :test +gem "activerecord", "~> 4.2.3" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 1.3.13", group: :test +gem "i18n", "~> 0.7.0", group: :test diff --git a/gemfiles/5.0.gemfile b/gemfiles/5.0.gemfile index a289a87..ea64a17 100644 --- a/gemfiles/5.0.gemfile +++ b/gemfiles/5.0.gemfile @@ -1,13 +1,9 @@ -# frozen_string_literal: true - # This file was generated by Appraisal -source 'http://rubygems.org' +source "http://rubygems.org" -gem 'activerecord', '~> 5.0.0' -gem 'appraisal', :group => :test -gem 'bundler', '~> 1.17.3', :group => :test -gem 'i18n', '~> 0.7.0' -gem 'minitest', :group => :test -gem 'rake', '~> 10.4', :group => :test -gem 'sqlite3', '~> 1.3.13', :group => :test +gem "activerecord", "~> 5.0.0" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 1.3.13", group: :test +gem "i18n", "~> 0.7.0", group: :test diff --git a/gemfiles/5.1.gemfile b/gemfiles/5.1.gemfile index 5a2ee33..2ea42a0 100644 --- a/gemfiles/5.1.gemfile +++ b/gemfiles/5.1.gemfile @@ -1,13 +1,9 @@ -# frozen_string_literal: true - # This file was generated by Appraisal -source 'http://rubygems.org' +source "http://rubygems.org" -gem 'activerecord', '~> 5.1.0' -gem 'appraisal', :group => :test -gem 'bundler', '~> 1.17.3', :group => :test -gem 'i18n', '~> 0.7.0' -gem 'minitest', :group => :test -gem 'rake', '~> 10.4', :group => :test -gem 'sqlite3', '~> 1.3.13', :group => :test +gem "activerecord", "~> 5.1.0" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 1.3.13", group: :test +gem "i18n", "~> 0.7.0", group: :test diff --git a/gemfiles/5.2.gemfile b/gemfiles/5.2.gemfile index f09c254..7fac858 100644 --- a/gemfiles/5.2.gemfile +++ b/gemfiles/5.2.gemfile @@ -1,13 +1,9 @@ -# frozen_string_literal: true - # This file was generated by Appraisal -source 'http://rubygems.org' +source "http://rubygems.org" -gem 'activerecord', '~> 5.2.0' -gem 'appraisal', :group => :test -gem 'bundler', '~> 1.17.3', :group => :test -gem 'i18n', '~> 0.7.0' -gem 'minitest', :group => :test -gem 'rake', '~> 10.4', :group => :test -gem 'sqlite3', '~> 1.3.13', :group => :test +gem "activerecord", "~> 5.2.0" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 1.3.13" +gem "i18n", "~> 0.7.0" diff --git a/gemfiles/6.0.gemfile b/gemfiles/6.0.gemfile index e30def0..ade039d 100644 --- a/gemfiles/6.0.gemfile +++ b/gemfiles/6.0.gemfile @@ -1,12 +1,8 @@ -# frozen_string_literal: true - # This file was generated by Appraisal -source 'http://rubygems.org' +source "http://rubygems.org" -gem 'activerecord', '~> 6.0.0' -gem 'appraisal', :group => :test -gem 'bundler', '~> 1.17.3', :group => :test -gem 'minitest', :group => :test -gem 'rake', '~> 10.4', :group => :test -gem 'sqlite3', '~> 1.4.1' +gem "activerecord", "~> 6.0.0" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 1.4.1", group: :test diff --git a/gemfiles/7.0.gemfile b/gemfiles/7.0.gemfile index c0db6a5..068927d 100644 --- a/gemfiles/7.0.gemfile +++ b/gemfiles/7.0.gemfile @@ -1,10 +1,8 @@ # This file was generated by Appraisal -source 'http://rubygems.org' +source "http://rubygems.org" -gem 'activerecord', '~> 7.0.0' -gem 'bundler', '~> 1.17.3', group: :test -gem 'rake', '~> 12.3', group: :test -gem 'appraisal', group: :test -gem 'minitest', group: :test -gem 'sqlite3', '~> 1.4.2' +gem "activerecord", "~> 7.0.0" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 1.4.1", group: :test diff --git a/gemfiles/8.0.gemfile b/gemfiles/8.0.gemfile new file mode 100644 index 0000000..b0563aa --- /dev/null +++ b/gemfiles/8.0.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "http://rubygems.org" + +gem "activerecord", "~> 8.0.0" +gem "appraisal", group: :test +gem "minitest", group: :test +gem "sqlite3", "~> 2.2", group: :test diff --git a/gemfiles/8.0.gemfile.lock b/gemfiles/8.0.gemfile.lock new file mode 100644 index 0000000..062c81f --- /dev/null +++ b/gemfiles/8.0.gemfile.lock @@ -0,0 +1,62 @@ +GEM + remote: http://rubygems.org/ + specs: + activemodel (8.0.0) + activesupport (= 8.0.0) + activerecord (8.0.0) + activemodel (= 8.0.0) + activesupport (= 8.0.0) + timeout (>= 0.4.0) + activesupport (8.0.0) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + base64 (0.2.0) + benchmark (0.4.0) + bigdecimal (3.1.8) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + drb (2.2.1) + i18n (1.14.6) + concurrent-ruby (~> 1.0) + logger (1.6.1) + mini_portile2 (2.8.7) + minitest (5.25.1) + rake (12.3.3) + securerandom (0.3.2) + sqlite3 (2.2.0) + mini_portile2 (~> 2.8.0) + sqlite3 (2.2.0-arm64-darwin) + thor (1.3.2) + timeout (0.4.2) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + uri (1.0.2) + +PLATFORMS + arm64-darwin-23 + ruby + +DEPENDENCIES + activerecord (~> 8.0.0) + appraisal + bundler (~> 2.5.20) + minitest + rake (~> 12.3) + sqlite3 (~> 2.2) + +BUNDLED WITH + 2.5.20 diff --git a/readme.md b/readme.md index 89f65c1..2e441c3 100644 --- a/readme.md +++ b/readme.md @@ -6,9 +6,8 @@ This gem gives every ActiveRecord::Base object the possibility to do a deep clon ## Requirements -- Ruby 2.3.0, 2.4.4, 2.5.5, 2.6.3, 2.7.5 (tested) -- TruffleRuby 21.3.0 -- Activerecord 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0, 7.0 (tested) +- Ruby 2.3.0, 2.4.4, 2.5.5, 2.6.3, 2.7.5, 3.3.5 (tested) +- Activerecord 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0, 7.0, 8.0 (tested) - Rails 2.x/3.0 users, please check out the 'rails2.x-3.0' branch ## Installation @@ -16,7 +15,7 @@ This gem gives every ActiveRecord::Base object the possibility to do a deep clon - Add deep_cloneable to your Gemfile: ```ruby -gem 'deep_cloneable', '~> 3.2.0' +gem 'deep_cloneable', '~> 3.2.1' ``` ## Upgrade details @@ -240,4 +239,4 @@ pirate.deep_clone include: [:parrot, :rum], skip_missing_associations: true ### Copyright -Copyright © 2021 Reinier de Lange. See LICENSE for details. +Copyright © 2024 Reinier de Lange. See LICENSE for details. diff --git a/test/test_deep_cloneable.rb b/test/test_deep_cloneable.rb index a021e4b..d04954b 100644 --- a/test/test_deep_cloneable.rb +++ b/test/test_deep_cloneable.rb @@ -2,7 +2,7 @@ require 'test_helper' -class TestDeepCloneable < MiniTest::Unit::TestCase +class TestDeepCloneable < Minitest::Test def setup @jack = Pirate.create(:name => 'Jack Sparrow', :nick_name => 'Captain Jack', :age => 30) @polly = Parrot.create(:name => 'Polly', :age => 2, :pirate => @jack)