archival_record 2.0.2 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.gitlab-ci.yml +20 -0
  4. data/.rubocop.yml +7 -5
  5. data/.rubocop_todo.yml +1 -8
  6. data/Appraisals +8 -11
  7. data/CHANGELOG.md +15 -0
  8. data/Gemfile.lock +77 -43
  9. data/LICENSE +5 -2
  10. data/README.md +36 -12
  11. data/archival_record.gemspec +36 -31
  12. data/gemfiles/{rails_5.1.gemfile → rails_6.1.gemfile} +1 -2
  13. data/gemfiles/{rails_5.2.gemfile → rails_7.0.gemfile} +1 -2
  14. data/gemfiles/{rails_5.0.gemfile → rails_7.1.gemfile} +1 -2
  15. data/init.rb +2 -2
  16. data/lib/archival_record/version.rb +1 -1
  17. data/lib/archival_record.rb +5 -5
  18. data/lib/archival_record_core/archival_record.rb +38 -21
  19. data/lib/archival_record_core/archival_record_active_record_methods.rb +3 -2
  20. data/lib/archival_record_core/association_operation/base.rb +4 -2
  21. data/test/application_record_test.rb +1 -1
  22. data/test/archive_dependents_option_test.rb +54 -0
  23. data/test/basic_test.rb +5 -5
  24. data/test/bogus_relation_test.rb +22 -0
  25. data/test/deep_nesting_test.rb +1 -1
  26. data/test/fixtures/bogus_relation.rb +6 -0
  27. data/test/fixtures/explicit_act_on_dependents_archival.rb +9 -0
  28. data/test/fixtures/ignorable_dependent.rb +10 -0
  29. data/test/fixtures/ignore_dependents_archival.rb +9 -0
  30. data/test/fixtures/nonignorable_dependent.rb +10 -0
  31. data/test/polymorphic_test.rb +2 -2
  32. data/test/relations_test.rb +1 -1
  33. data/test/schema.rb +27 -0
  34. data/test/scope_test.rb +4 -10
  35. data/test/test_helper.rb +19 -25
  36. data/test/transaction_test.rb +2 -1
  37. metadata +55 -53
  38. data/.travis.yml +0 -23
  39. data/test/fixtures/callback_archival_4.rb +0 -19
  40. /data/test/fixtures/{callback_archival_5.rb → callback_archival.rb} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 749d93406c2538c8252af9f61e801c7ff88d5d28e2f17b7c77f469958b02f1af
4
- data.tar.gz: d98a6d346829cd376b87d39d42ea11893ca4508f9ecef47bd76042ca16e9960b
3
+ metadata.gz: de698cb4c6c28dbc975343cbb8c64040423a401fe1963486e4d43feacdaf70fd
4
+ data.tar.gz: 423dc258212a7b8ff4fb78a6acc29bc979846820c50263859e0d9d2a9e634c81
5
5
  SHA512:
6
- metadata.gz: 9efc50a111d529028ef245000cb16fd0839153633c573da55e1b4a000051d9e222d64308f64c38a50e87deca1ac5f1ff930ad1cf2fe46aaa3edc3408aaabdbaa
7
- data.tar.gz: 49a8420bbe12026628fff779c0a8592b2b9285e86ac28b18421afc52159321b77f1e01a51f0aef05610fb805d1bb4229707aa0d4d1085f57383ce93831fe9b19
6
+ metadata.gz: a24054ef6cd9fc3ed12233e10e11fa194e26f72499534925bdd4d4bad05b9245bb994763ba6b449b7100e48dda00ce30de641b51f9d6a797697fba2805335f84
7
+ data.tar.gz: 3dab3e39d40c31fcfe60129b8eb9a3fb420be3ece65c18a7bfa3da367026b9c44ecee1e4b721ea71bd28cc85920308d427d391ddab10e2a0a82e1e2203e9ff30
data/.gitignore CHANGED
@@ -3,8 +3,11 @@
3
3
  .bundle
4
4
  bin
5
5
  vendor/bundle
6
+ .nix-bundler
6
7
  *.gem
7
8
  gemfiles/*.lock
8
9
  pkg/*
9
10
  .DS_Store
10
11
  *.sqlite3
12
+ *.sqlite3-shm
13
+ *.sqlite3-wal
data/.gitlab-ci.yml ADDED
@@ -0,0 +1,20 @@
1
+ image: "ruby:3.2"
2
+
3
+ before_script:
4
+ - apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs
5
+ - ruby -v
6
+ - which ruby
7
+ - gem install bundler --no-document
8
+ - bundle install --jobs $(nproc) "${FLAGS[@]}"
9
+ - bundle install --gemfile=gemfiles/rails_6.0.gemfile
10
+ - bundle install --gemfile=gemfiles/rails_6.1.gemfile
11
+ - bundle install --gemfile=gemfiles/rails_7.0.gemfile
12
+ - bundle install --gemfile=gemfiles/rails_7.1.gemfile
13
+
14
+ rake:
15
+ script:
16
+ - bundle exec rake
17
+
18
+ appraisal:
19
+ script:
20
+ - bundle exec appraisal rake
data/.rubocop.yml CHANGED
@@ -1,10 +1,13 @@
1
1
  inherit_from: .rubocop_todo.yml
2
+ require:
3
+ - rubocop-rails
4
+ - rubocop-rake
2
5
 
3
6
  AllCops:
4
7
  Exclude:
5
8
  - vendor/**/*
6
9
  - gemfiles/**/*
7
- TargetRubyVersion: 2.4
10
+ TargetRubyVersion: 3.0
8
11
  NewCops: enable
9
12
 
10
13
 
@@ -17,9 +20,6 @@ Layout/EmptyLinesAroundClassBody:
17
20
  Layout/EmptyLinesAroundModuleBody:
18
21
  EnforcedStyle: empty_lines_except_namespace
19
22
 
20
- Layout/LineLength:
21
- Max: 140
22
-
23
23
  Layout/SpaceInsideHashLiteralBraces:
24
24
  EnforcedStyle: space
25
25
 
@@ -52,6 +52,7 @@ Style/Alias:
52
52
  Style/AsciiComments:
53
53
  Enabled: false
54
54
 
55
+ # TODO: class documentation
55
56
  Style/Documentation:
56
57
  Enabled: false
57
58
 
@@ -66,9 +67,10 @@ Style/FrozenStringLiteralComment:
66
67
 
67
68
  Style/HashSyntax:
68
69
  EnforcedStyle: ruby19
70
+ EnforcedShorthandSyntax: always
69
71
 
70
72
  Style/RaiseArgs:
71
- EnforcedStyle: compact
73
+ EnforcedStyle: exploded
72
74
 
73
75
  Style/StringLiterals:
74
76
  EnforcedStyle: double_quotes
data/.rubocop_todo.yml CHANGED
@@ -1,14 +1,7 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-08-03 13:04:37 -0400 using RuboCop version 0.82.0.
3
+ # on 2024-06-11 01:38:42 UTC using RuboCop version 1.64.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 7
10
- # Cop supports --auto-correct.
11
- Lint/SendWithMixinArgument:
12
- Exclude:
13
- - 'init.rb'
14
- - 'lib/archival_record.rb'
data/Appraisals CHANGED
@@ -1,18 +1,15 @@
1
- appraise "rails-5.0" do
2
- gem "rails", "~> 5.0.0"
3
- gem "sqlite3", "~> 1.3.13"
1
+ appraise "rails-6.0" do
2
+ gem "rails", "~> 6.0.0"
4
3
  end
5
4
 
6
- appraise "rails-5.1" do
7
- gem "rails", "~> 5.1.0"
8
- gem "sqlite3", "~> 1.4.1"
5
+ appraise "rails-6.1" do
6
+ gem "rails", "~> 6.1.0"
9
7
  end
10
8
 
11
- appraise "rails-5.2" do
12
- gem "rails", "~> 5.2.0"
13
- gem "sqlite3", "~> 1.4.1"
9
+ appraise "rails-7.0" do
10
+ gem "rails", "~> 7.0.0"
14
11
  end
15
12
 
16
- appraise "rails-6.0" do
17
- gem "rails", "~> 6.0.0"
13
+ appraise "rails-7.1" do
14
+ gem "rails", "~> 7.1.0"
18
15
  end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 3.0.1 - June 10, 2024
4
+ * a few more tidying items like fixing up some raw sql in a query to be arel
5
+ * changing a logging method to use error instead of debug so it surfaces more easily
6
+
7
+ ## 3.0.0 - June 10, 2024
8
+ * **BREAKING CHANGE** Drop support for rails 5 - see `rails__4.x-and-5.x` branch for relevant code
9
+ * **BREAKING CHANGE** Drop support for Ruby 2.x
10
+ * **ADDED** new option for `archival_record` called `archive_dependents` which can control whether `dependent: :destroy` records are archived with their parent
11
+ * lots of cleanup of code, particularly the way `ApplicationRecord` gets patched
12
+ * remove travis-ci, use gitlab pipelines
13
+
14
+ ## 2.0.2 - August 4, 2020
15
+ * fixing travis
16
+ * updating git hosting link
17
+
3
18
  ## 2.0.1 - August 3, 2020
4
19
  * Add security policy
5
20
  * Update depenedent gems: archival_record (:D oops) and rubocop, and dependencies
data/Gemfile.lock CHANGED
@@ -1,60 +1,92 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- archival_record (2.0.0)
5
- activerecord (>= 5.0)
4
+ archival_record (3.0.1)
5
+ activerecord (>= 6.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activemodel (6.0.3.2)
11
- activesupport (= 6.0.3.2)
12
- activerecord (6.0.3.2)
13
- activemodel (= 6.0.3.2)
14
- activesupport (= 6.0.3.2)
15
- activesupport (6.0.3.2)
10
+ activemodel (7.1.3.4)
11
+ activesupport (= 7.1.3.4)
12
+ activerecord (7.1.3.4)
13
+ activemodel (= 7.1.3.4)
14
+ activesupport (= 7.1.3.4)
15
+ timeout (>= 0.4.0)
16
+ activesupport (7.1.3.4)
17
+ base64
18
+ bigdecimal
16
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
- i18n (>= 0.7, < 2)
18
- minitest (~> 5.1)
19
- tzinfo (~> 1.1)
20
- zeitwerk (~> 2.2, >= 2.2.2)
21
- appraisal (2.3.0)
20
+ connection_pool (>= 2.2.5)
21
+ drb
22
+ i18n (>= 1.6, < 2)
23
+ minitest (>= 5.1)
24
+ mutex_m
25
+ tzinfo (~> 2.0)
26
+ appraisal (2.5.0)
22
27
  bundler
23
28
  rake
24
29
  thor (>= 0.14.0)
25
- ast (2.4.1)
26
- concurrent-ruby (1.1.6)
27
- database_cleaner (1.8.5)
28
- i18n (1.8.5)
30
+ ast (2.4.2)
31
+ base64 (0.2.0)
32
+ bigdecimal (3.1.8)
33
+ concurrent-ruby (1.3.3)
34
+ connection_pool (2.4.1)
35
+ database_cleaner (2.0.2)
36
+ database_cleaner-active_record (>= 2, < 3)
37
+ database_cleaner-active_record (2.1.0)
38
+ activerecord (>= 5.a)
39
+ database_cleaner-core (~> 2.0.0)
40
+ database_cleaner-core (2.0.1)
41
+ drb (2.2.1)
42
+ i18n (1.14.5)
29
43
  concurrent-ruby (~> 1.0)
30
- minitest (5.14.1)
31
- parallel (1.19.2)
32
- parser (2.7.1.4)
44
+ json (2.7.2)
45
+ language_server-protocol (3.17.0.3)
46
+ mini_portile2 (2.8.7)
47
+ minitest (5.23.1)
48
+ mutex_m (0.2.0)
49
+ parallel (1.25.1)
50
+ parser (3.3.2.0)
33
51
  ast (~> 2.4.1)
34
- rainbow (3.0.0)
35
- rake (13.0.1)
36
- regexp_parser (1.7.1)
37
- rexml (3.2.4)
38
- rr (1.2.1)
39
- rubocop (0.88.0)
52
+ racc
53
+ racc (1.8.0)
54
+ rack (3.0.11)
55
+ rainbow (3.1.1)
56
+ rake (13.2.1)
57
+ regexp_parser (2.9.2)
58
+ rexml (3.2.9)
59
+ strscan
60
+ rr (3.1.0)
61
+ rubocop (1.64.1)
62
+ json (~> 2.3)
63
+ language_server-protocol (>= 3.17.0)
40
64
  parallel (~> 1.10)
41
- parser (>= 2.7.1.1)
65
+ parser (>= 3.3.0.2)
42
66
  rainbow (>= 2.2.2, < 4.0)
43
- regexp_parser (>= 1.7)
44
- rexml
45
- rubocop-ast (>= 0.1.0, < 1.0)
67
+ regexp_parser (>= 1.8, < 3.0)
68
+ rexml (>= 3.2.5, < 4.0)
69
+ rubocop-ast (>= 1.31.1, < 2.0)
46
70
  ruby-progressbar (~> 1.7)
47
- unicode-display_width (>= 1.4.0, < 2.0)
48
- rubocop-ast (0.3.0)
49
- parser (>= 2.7.1.4)
50
- ruby-progressbar (1.10.1)
51
- sqlite3 (1.4.2)
52
- thor (1.0.1)
53
- thread_safe (0.3.6)
54
- tzinfo (1.2.7)
55
- thread_safe (~> 0.1)
56
- unicode-display_width (1.7.0)
57
- zeitwerk (2.4.0)
71
+ unicode-display_width (>= 2.4.0, < 3.0)
72
+ rubocop-ast (1.31.3)
73
+ parser (>= 3.3.1.0)
74
+ rubocop-rails (2.25.0)
75
+ activesupport (>= 4.2.0)
76
+ rack (>= 1.1)
77
+ rubocop (>= 1.33.0, < 2.0)
78
+ rubocop-ast (>= 1.31.1, < 2.0)
79
+ rubocop-rake (0.6.0)
80
+ rubocop (~> 1.0)
81
+ ruby-progressbar (1.13.0)
82
+ sqlite3 (1.7.3)
83
+ mini_portile2 (~> 2.8.0)
84
+ strscan (3.1.0)
85
+ thor (1.3.1)
86
+ timeout (0.4.1)
87
+ tzinfo (2.0.6)
88
+ concurrent-ruby (~> 1.0)
89
+ unicode-display_width (2.5.0)
58
90
 
59
91
  PLATFORMS
60
92
  ruby
@@ -66,7 +98,9 @@ DEPENDENCIES
66
98
  rake
67
99
  rr
68
100
  rubocop
69
- sqlite3
101
+ rubocop-rails
102
+ rubocop-rake
103
+ sqlite3 (< 2)
70
104
 
71
105
  BUNDLED WITH
72
- 2.1.4
106
+ 2.5.11
data/LICENSE CHANGED
@@ -1,8 +1,11 @@
1
- Copyright for portions of project ArchivalRecord are held by Expected Behavior, 2009-2020 as part of project ActsAsArchival. All other copyright for project ArchivalRecord are held by Joel Meador, 2020.
1
+ Copyright for portions of project ArchivalRecord are held by Expected Behavior,
2
+ 2009-2020 as part of project ActsAsArchival.
3
+
4
+ All other copyright for project ArchivalRecord are held by Joel Meador, 2020.
2
5
 
3
6
  -----
4
7
 
5
- LICENSE for [ArchivalRecord](https://github.com/janxious/archival_record/)
8
+ LICENSE for [ArchivalRecord](https://gitlab.com/joelmeador/archival_record/)
6
9
 
7
10
  Copyright (c) 2020 Joel Meador
8
11
 
data/README.md CHANGED
@@ -1,8 +1,5 @@
1
1
  # ArchivalRecord
2
2
 
3
- [![Build Status](https://travis-ci.org/janxious/archival_record.svg?branch=main)](https://travis-ci.org/janxious/archival_record)
4
- [![Gem Version](https://badge.fury.io/rb/archival_record.svg)](https://badge.fury.io/rb/archival_record)
5
-
6
3
  Atomically archive object trees in your ActiveRecord models.
7
4
 
8
5
  `acts_as_paranoid` and similar plugins/gems work on a record-by-record basis and made it difficult to restore records atomically (or archive them, for that matter).
@@ -11,6 +8,8 @@ Because the `#archive!` and `#unarchive!` methods are in transactions, and every
11
8
 
12
9
  Additionally, other plugins generally change how `destroy`/`delete` work. ArchivalRecord does not, and thus one can destroy records like normal.
13
10
 
11
+ _This is a fork of [ActsAsArchival](https://github.com/expectedbehavior/acts_as_archival/)._
12
+
14
13
  ## Maintenance
15
14
 
16
15
  You might read the commit logs and think "This must be abandonware! This hasn't been updated in 2y!" But! This is a mature project that solves a specific problem in ActiveRecord. It tends to only be updated when a new major version of ActiveRecord comes out and hence the infrequent updates.
@@ -21,23 +20,23 @@ Gemfile:
21
20
 
22
21
  `gem "archival_record"`
23
22
 
24
- Any models you want to be archival should have the columns `archive_number` (String) and `archived_at` (DateTime).
23
+ Any models you want to be archival should have the columns `archive_number` (`String`) and `archived_at` (`DateTime`).
25
24
 
26
25
  i.e. `rails g migration AddArchivalRecordToPost archive_number archived_at:datetime`
27
26
 
28
27
  Any dependent-destroy ArchivalRecord model associated to an ArchivalRecord model will be archived with its parent.
29
28
 
30
- _If you're stuck on Rails 4.0x/3x/2x, check out the older tags/branches, which are no longer in active development._
29
+ _If you're stuck on Rails 5x/4x/3x/2x, check out the older tags/branches, which are no longer in active development._
31
30
 
32
31
  ## Example
33
32
 
34
33
  ``` ruby
35
- class Hole < ActiveRecord::Base
34
+ class Hole < ApplicationRecord
36
35
  archival_record
37
36
  has_many :rats, dependent: :destroy
38
37
  end
39
38
 
40
- class Rat < ActiveRecord::Base
39
+ class Rat < ApplicationRecord
41
40
  archival_record
42
41
  end
43
42
  ```
@@ -112,12 +111,13 @@ Hole.archival? # => true
112
111
 
113
112
  ### Options
114
113
 
114
+ #### `readonly_when_archived`
115
115
  When defining an ArchivalRecord model, it is is possible to make it unmodifiable
116
116
  when it is archived by passing `readonly_when_archived: true` to the
117
- `archival_record` call in your model.
117
+ `archival_record` call in your model. The default value of this option is `false`.
118
118
 
119
119
  ``` ruby
120
- class CantTouchThis < ActiveRecord::Base
120
+ class CantTouchThis < ApplicationRecord
121
121
  archival_record readonly_when_archived: true
122
122
  end
123
123
 
@@ -128,12 +128,32 @@ record.save # => false
128
128
  record.errors.full_messages.first # => "Cannot modify an archived record."
129
129
  ```
130
130
 
131
+ #### `archive_dependents`
132
+ When defining an ArchivalRecord model, it is possible to deactivate archiving/unarchiving for `dependent: :destroy` relationships that are tied to ArchivalRecord models by passing `archive_dependents: false` to the `archival_record` call in your model. The default value of this option is `true`.
133
+
134
+ ``` ruby
135
+ class WillArchive < ApplicationRecord
136
+ archival_record archive_dependents: false
137
+ has_many :wont_archives, dependent: :destroy
138
+ end
139
+ class WontArchive < ApplicationRecord
140
+ archival_record
141
+ end
142
+
143
+ record = WillArchive.create
144
+ wont_archive = record.wont_archives.create
145
+ record.archive!
146
+
147
+ record.archived? # => true
148
+ wont_archive.archived? # => false
149
+ ```
150
+
131
151
  ### Callbacks
132
152
 
133
153
  ArchivalRecord models have four additional callbacks to do any necessary cleanup or other processing before and after archiving and unarchiving, and can additionally halt the archive callback chain.
134
154
 
135
155
  ``` ruby
136
- class Hole < ActiveRecord::Base
156
+ class Hole < ApplicationRecord
137
157
  archival_record
138
158
 
139
159
  # runs before #archive!
@@ -160,8 +180,12 @@ end
160
180
  ## Caveats
161
181
 
162
182
  1. This will only work on associations that are dependent destroy. It
163
- should be trival to change that or make it optional.
164
- 1. If you would like to work on this, you will need to setup sqlite on your development machine. Alternately, you can disable specific dev dependencies in the gemspec and test_helper and ask for help.
183
+ should be trivial to change that or make it optional.
184
+ 1. If you would like to work on this, you will need to setup sqlite on your development machine. Alternately, you can deactivate specific dev dependencies in the gemspec and test_helper and ask for help.
185
+
186
+ ## Compatibility with ActsAsArchival
187
+
188
+ For now, the `acts_as_archival` class method can be used, though it will print a deprecation warning. This is to allow users to transition without trouble to this library if they choose to.
165
189
 
166
190
  ## Testing
167
191
 
@@ -3,40 +3,44 @@ $LOAD_PATH.push File.expand_path("lib", __dir__)
3
3
  require "archival_record/version"
4
4
 
5
5
  Gem::Specification.new do |gem|
6
- gem.name = "archival_record"
7
- gem.summary = "Atomic archiving/unarchiving for ActiveRecord"
8
- gem.version = ArchivalRecord::VERSION
9
- gem.authors = ["Joel Meador",
10
- "Michael Kuehl",
11
- "Matthew Gordon",
12
- "Vojtech Salbaba",
13
- "David Jones",
14
- "Dave Woodward",
15
- "Miles Sterrett",
16
- "James Hill",
17
- "Maarten Claes",
18
- "Anthony Panozzo",
19
- "Aaron Milam",
20
- "Anton Rieder",
21
- "Josh Menden",
22
- "Sergey Gnuskov",
23
- "Elijah Miller"]
24
- gem.email = ["joel.meador+archival_record@gmail.com"]
25
- gem.homepage = "https://gitlab.com/joelmeador/archival_record/"
26
-
27
- gem.files = `git ls-files`.split("\n")
28
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
6
+ gem.name = "archival_record"
7
+ gem.summary = "Atomic archiving/unarchiving for ActiveRecord"
8
+ gem.version = ArchivalRecord::VERSION
9
+ gem.authors = ["Joel Meador",
10
+ "Michael Kuehl",
11
+ "Matthew Gordon",
12
+ "Vojtech Salbaba",
13
+ "David Jones",
14
+ "Dave Woodward",
15
+ "Miles Sterrett",
16
+ "James Hill",
17
+ "Maarten Claes",
18
+ "Anthony Panozzo",
19
+ "Aaron Milam",
20
+ "Anton Rieder",
21
+ "Josh Menden",
22
+ "Sergey Gnuskov",
23
+ "Elijah Miller"]
24
+ gem.email = ["joel.meador+archival_record@gmail.com"]
25
+ gem.homepage = "https://gitlab.com/joelmeador/archival_record/"
26
+ gem.licenses = ["MIT"]
27
+
28
+ gem.files = `git ls-files`.split("\n")
29
29
  gem.require_paths = ["lib"]
30
- gem.required_ruby_version = ">= 2.4"
30
+ gem.required_ruby_version = ">= 3.0"
31
31
 
32
- gem.add_dependency "activerecord", ">= 5.0"
32
+ gem.add_dependency("activerecord", ">= 6.0")
33
33
 
34
- gem.add_development_dependency "appraisal"
35
- gem.add_development_dependency "database_cleaner"
36
- gem.add_development_dependency "rake"
37
- gem.add_development_dependency "rr"
38
- gem.add_development_dependency "rubocop"
39
- gem.add_development_dependency "sqlite3"
34
+ # rubocop:disable Gemspec/DevelopmentDependencies
35
+ gem.add_development_dependency("appraisal")
36
+ gem.add_development_dependency("database_cleaner")
37
+ gem.add_development_dependency("rake")
38
+ gem.add_development_dependency("rr")
39
+ gem.add_development_dependency("rubocop")
40
+ gem.add_development_dependency("rubocop-rails")
41
+ gem.add_development_dependency("rubocop-rake")
42
+ gem.add_development_dependency("sqlite3", "< 2")
43
+ # rubocop:enable Gemspec/DevelopmentDependencies
40
44
 
41
45
  gem.description =
42
46
  <<~DESCRIPTION
@@ -48,4 +52,5 @@ Gem::Specification.new do |gem|
48
52
 
49
53
  Additionally, other plugins generally change how destroy/delete work. ArchivalRecord does not, and thus one can destroy records like normal.
50
54
  DESCRIPTION
55
+ gem.metadata["rubygems_mfa_required"] = "true"
51
56
  end
@@ -2,7 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 5.1.0"
6
- gem "sqlite3", "~> 1.4.1"
5
+ gem "rails", "~> 6.1.0"
7
6
 
8
7
  gemspec path: "../"
@@ -2,7 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 5.2.0"
6
- gem "sqlite3", "~> 1.4.1"
5
+ gem "rails", "~> 7.0.0"
7
6
 
8
7
  gemspec path: "../"
@@ -2,7 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 5.0.0"
6
- gem "sqlite3", "~> 1.3.13"
5
+ gem "rails", "~> 7.1.0"
7
6
 
8
7
  gemspec path: "../"
data/init.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  # Include hook code here
2
- ActiveRecord::Base.send :include, ArchivalRecordCore::ArchivalRecordActiveRecordMethods
3
- ActiveRecord::Base.send :include, ArchivalRecordCore::ArchivalRecord
2
+ ActiveSupport.on_load(:active_record) { include ArchivalRecordCore::ArchivalRecordActiveRecordMethods }
3
+ ActiveSupport.on_load(:active_record) { include ArchivalRecordCore::ArchivalRecord }
@@ -1,5 +1,5 @@
1
1
  module ArchivalRecord
2
2
 
3
- VERSION = "2.0.2".freeze
3
+ VERSION = "3.0.1".freeze
4
4
 
5
5
  end
@@ -9,11 +9,11 @@ require "archival_record_core/archival_record_active_record_methods"
9
9
 
10
10
  # This assumes a fully Rails 5 compatible set of ActiveRecord models
11
11
  if defined?(ApplicationRecord)
12
- ApplicationRecord.send :include, ArchivalRecordCore::ArchivalRecord
13
- ApplicationRecord.send :include, ArchivalRecordCore::ArchivalRecordActiveRecordMethods
12
+ ApplicationRecord.include ArchivalRecordCore::ArchivalRecord
13
+ ApplicationRecord.include ArchivalRecordCore::ArchivalRecordActiveRecordMethods
14
14
  else
15
- ActiveRecord::Base.send :include, ArchivalRecordCore::ArchivalRecord
16
- ActiveRecord::Base.send :include, ArchivalRecordCore::ArchivalRecordActiveRecordMethods
15
+ ActiveSupport.on_load(:active_record) { include ArchivalRecordCore::ArchivalRecord }
16
+ ActiveSupport.on_load(:active_record) { include ArchivalRecordCore::ArchivalRecordActiveRecordMethods }
17
17
  end
18
18
 
19
- ActiveRecord::Relation.send :include, ArchivalRecordCore::ArchivalRecordActiveRecordMethods::ARRelationMethods
19
+ ActiveRecord::Relation.include ArchivalRecordCore::ArchivalRecordActiveRecordMethods::ARRelationMethods