acts_as_archival 1.3.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 57fc429ad5b01bdcf06307addddfbfbcaa6d9c28
4
- data.tar.gz: cd104110c549dd3e187c7e0095e22b1c4ba59fda
2
+ SHA256:
3
+ metadata.gz: ebfd9690765e2b7676db8c90e2459ccccf3ff2ef9f6b94898fafa565cfdc708a
4
+ data.tar.gz: 303ee5fb63bd23c6bc35ef69b23eab80c455acd75632e3ca41a03b378fb3a471
5
5
  SHA512:
6
- metadata.gz: 67046bb797b64b2b7de8079f4b95a1c55e1a07d92614711a775ff372931997f156139ad6aa920d7bd2398d9376c5f06834c25a4404dd524728eb0602c659ee7b
7
- data.tar.gz: 24cf648a878a16eba6b089bf60504f2609386cd4a39735e6e163e6ffe48d70a50830005fb4ac58a303f87ae73854c3b608cab6dd8669e1bafd340ab95b555e4d
6
+ metadata.gz: d559c3b334d403418304225720db0b4cc78517bc4fd7fd43d6e3cb0bae8704c7f7e05288202658bec3d1622395e76583d538dca5ba942fbb4108a77060e19988
7
+ data.tar.gz: 1e64b71d7f09a82d38e68abb807c36a70f7ce6fe577ec45047a1f1cfb6cf466280634fae78acfb4c83f9b81a9a801a68c79095cd2f5102dc7e28ab9cf6eb1716
data/.gitignore CHANGED
@@ -4,7 +4,8 @@
4
4
  bin
5
5
  vendor/bundle
6
6
  *.gem
7
- *emfile.lock
7
+ gemfiles/*.lock
8
8
  pkg/*
9
9
  .DS_Store
10
10
  *.sqlite3
11
+ .idea/
data/.rubocop.yml CHANGED
@@ -4,6 +4,25 @@ AllCops:
4
4
  Exclude:
5
5
  - vendor/**/*
6
6
  - gemfiles/**/*
7
+ MinimumTargetRubyVersion: 2.7.3
8
+ NewCops: enable
9
+ SuggestExtensions: false
10
+
11
+
12
+ ################
13
+ # Layout Rules #
14
+ ################
15
+ Layout/EmptyLinesAroundClassBody:
16
+ EnforcedStyle: empty_lines_except_namespace
17
+
18
+ Layout/EmptyLinesAroundModuleBody:
19
+ EnforcedStyle: empty_lines_except_namespace
20
+
21
+ Layout/LineLength:
22
+ Max: 140
23
+
24
+ Layout/SpaceInsideHashLiteralBraces:
25
+ EnforcedStyle: space
7
26
 
8
27
 
9
28
  ################
@@ -17,9 +36,6 @@ Metrics/BlockLength:
17
36
  Metrics/AbcSize:
18
37
  Max: 25
19
38
 
20
- Metrics/LineLength:
21
- Max: 140
22
-
23
39
  Metrics/MethodLength:
24
40
  Max: 10
25
41
  CountComments: false
@@ -43,39 +59,14 @@ Style/Documentation:
43
59
  Style/DoubleNegation:
44
60
  Enabled: false
45
61
 
46
- Style/EmptyLinesAroundClassBody:
47
- EnforcedStyle: empty_lines_except_namespace
48
-
49
- Style/EmptyLinesAroundModuleBody:
50
- EnforcedStyle: empty_lines_except_namespace
51
-
52
62
  Style/FrozenStringLiteralComment:
53
63
  EnforcedStyle: never
54
64
 
55
65
  Style/HashSyntax:
56
66
  EnforcedStyle: ruby19
57
67
 
58
- # TODO: replace the [] below with default once a new version of
59
- # rubocop comes out, since there is a PR for it:
60
- # https://github.com/bbatsov/rubocop/pull/4038
61
- Style/PercentLiteralDelimiters:
62
- PreferredDelimiters:
63
- '%': '{}'
64
- '%i': '[]'
65
- '%I': '[]'
66
- '%q': '{}'
67
- '%Q': '{}'
68
- '%r': '{}'
69
- '%s': '[]'
70
- '%w': '[]'
71
- '%W': '[]'
72
- '%x': '[]'
73
-
74
68
  Style/RaiseArgs:
75
69
  EnforcedStyle: compact
76
70
 
77
- Style/SpaceInsideHashLiteralBraces:
78
- EnforcedStyle: space
79
-
80
71
  Style/StringLiterals:
81
72
  EnforcedStyle: double_quotes
data/.rubocop_todo.yml CHANGED
@@ -1,7 +1,98 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2017-03-19 11:19:20 -0400 using RuboCop version 0.47.1.
3
+ # on 2020-04-28 17:17:25 +0200 using RuboCop version 0.82.0.
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: 2
10
+ # Cop supports --auto-correct.
11
+ Layout/EmptyLineAfterMagicComment:
12
+ Exclude:
13
+ - 'acts_as_archival.gemspec'
14
+ - 'test/scope_test.rb'
15
+
16
+ # Offense count: 1
17
+ # Cop supports --auto-correct.
18
+ # Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator.
19
+ # SupportedStylesForExponentOperator: space, no_space
20
+ Layout/SpaceAroundOperators:
21
+ Exclude:
22
+ - 'test/deep_nesting_test.rb'
23
+
24
+ # Offense count: 1
25
+ # Cop supports --auto-correct.
26
+ Lint/ScriptPermission:
27
+ Exclude:
28
+ - 'Rakefile'
29
+
30
+ # Offense count: 7
31
+ # Cop supports --auto-correct.
32
+ Lint/SendWithMixinArgument:
33
+ Exclude:
34
+ - 'init.rb'
35
+ - 'lib/acts_as_archival.rb'
36
+
37
+ # Offense count: 1
38
+ # Configuration parameters: EnforcedStyle.
39
+ # SupportedStyles: lowercase, uppercase
40
+ Naming/HeredocDelimiterCase:
41
+ Exclude:
42
+ - 'lib/expected_behavior/acts_as_archival.rb'
43
+
44
+ # Offense count: 3
45
+ # Configuration parameters: ForbiddenDelimiters.
46
+ # ForbiddenDelimiters: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
47
+ Naming/HeredocDelimiterNaming:
48
+ Exclude:
49
+ - 'acts_as_archival.gemspec'
50
+ - 'lib/expected_behavior/acts_as_archival.rb'
51
+
52
+ # Offense count: 12
53
+ # Configuration parameters: EnforcedStyle, AllowModifiersOnSymbols.
54
+ # SupportedStyles: inline, group
55
+ Style/AccessModifierDeclarations:
56
+ Exclude:
57
+ - 'lib/expected_behavior/acts_as_archival.rb'
58
+ - 'test/fixtures/callback_archival_4.rb'
59
+ - 'test/fixtures/callback_archival_5.rb'
60
+
61
+ # Offense count: 2
62
+ # Cop supports --auto-correct.
63
+ Style/Encoding:
64
+ Exclude:
65
+ - 'acts_as_archival.gemspec'
66
+ - 'test/scope_test.rb'
67
+
68
+ # Offense count: 1
69
+ Style/EvalWithLocation:
70
+ Exclude:
71
+ - 'lib/expected_behavior/acts_as_archival.rb'
72
+
73
+ # Offense count: 1
74
+ # Cop supports --auto-correct.
75
+ Style/ExpandPathArguments:
76
+ Exclude:
77
+ - 'acts_as_archival.gemspec'
78
+
79
+ # Offense count: 1
80
+ # Cop supports --auto-correct.
81
+ Style/IfUnlessModifier:
82
+ Exclude:
83
+ - 'test/test_helper.rb'
84
+
85
+ # Offense count: 1
86
+ # Cop supports --auto-correct.
87
+ # Configuration parameters: EnforcedStyle.
88
+ # SupportedStyles: implicit, explicit
89
+ Style/RescueStandardError:
90
+ Exclude:
91
+ - 'lib/expected_behavior/acts_as_archival.rb'
92
+
93
+ # Offense count: 3
94
+ # Cop supports --auto-correct.
95
+ # Configuration parameters: MinSize.
96
+ # SupportedStyles: percent, brackets
97
+ Style/SymbolArray:
98
+ EnforcedStyle: brackets
data/.travis.yml CHANGED
@@ -1,32 +1,23 @@
1
1
  language: ruby
2
- sudo: false
3
- dist: trusty
4
2
  cache: bundler
5
- script: "bundle exec rake"
6
3
 
7
4
  rvm:
8
- - 2.1.10
9
- - 2.2.6
10
- - 2.3.3
11
- - 2.4.0
5
+ - 2.4
6
+ - 2.5
7
+ - 2.6
8
+ - 2.7
12
9
 
13
10
  gemfile:
14
- - gemfiles/rails_4.1.gemfile
15
- - gemfiles/rails_4.2.gemfile
16
11
  - gemfiles/rails_5.0.gemfile
17
12
  - gemfiles/rails_5.1.gemfile
13
+ - gemfiles/rails_5.2.gemfile
14
+ - gemfiles/rails_6.0.gemfile
18
15
 
19
16
  before_install:
20
17
  - gem update --system
21
- - gem update bundler
22
- - gem cleanup bundler
23
18
 
24
19
  matrix:
25
20
  fast_finish: true
26
21
  exclude:
27
- - rvm: 2.1.10
28
- gemfile: gemfiles/rails_5.0.gemfile
29
- - rvm: 2.1.10
30
- gemfile: gemfiles/rails_5.1.gemfile
31
- - rvm: 2.4.0
32
- gemfile: gemfiles/rails_4.1.gemfile
22
+ - gemfile: gemfiles/rails_6.0.gemfile
23
+ rvm: 2.4
data/Appraisals CHANGED
@@ -1,15 +1,7 @@
1
- appraise "rails-4.1" do
2
- gem "rails", "~> 4.1.0"
1
+ appraise "rails-6.1" do
2
+ gem "rails", "~> 6.1"
3
3
  end
4
4
 
5
- appraise "rails-4.2" do
6
- gem "rails", "~> 4.2.0"
7
- end
8
-
9
- appraise "rails-5.0" do
10
- gem "rails", "~> 5.0.0"
11
- end
12
-
13
- appraise "rails-5.1" do
14
- gem "rails", "~> 5.1.0"
5
+ appraise "rails-7.0" do
6
+ gem "rails", "~> 7.0"
15
7
  end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.1.0
4
+ * **BREAKING CHANGE** Drop support for Rails 5.2 and 6.0 (6.1 support remains)
5
+ * Add support for Rails 7
6
+ * Fix deprecation warnings
7
+ * Need Ruby >=2.7 for Rails 7 support
8
+
9
+ ## 2.0.0
10
+
11
+ * **BREAKING CHANGE** Drop support for Rails 4.2
12
+ * **BREAKING CHANGE** Drop support for Rails 5.0
13
+ * **BREAKING CHANGE** Drop support for Rails 5.1
14
+ * **BREAKING CHANGE** Removed deprecated methods
15
+ * Fix Rails 6 deprecation warnings
16
+ * Add offical support for Rails 6.1
17
+
18
+ ## 1.4.0 - July 10, 2019
19
+ * **BREAKING CHANGE** drop support for rails 4.1
20
+ * **BREAKING CHANGE** drop support for Ruby <2.4
21
+ * **BUGFIX** polymorphic associations that are archived/unarchived can be acted on safely if they share the same ID.
22
+ * add support officially for rails 5.2
23
+ * sqlite upgrades for various rails
24
+ * new methods `#archive_all!` and `#unarchive_all` that can be called off scopes
25
+
26
+
3
27
  ## 1.3.0 - October 21, 2017
4
28
  * deprecate `#archive` and `#unarchive` in favor of `#archive!` and `#unarchive!` [#36](https://github.com/expectedbehavior/acts_as_archival/pull/36)
5
29
 
data/Gemfile.lock ADDED
@@ -0,0 +1,71 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ acts_as_archival (2.1.0)
5
+ activerecord (>= 6.1)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activemodel (7.0.3)
11
+ activesupport (= 7.0.3)
12
+ activerecord (7.0.3)
13
+ activemodel (= 7.0.3)
14
+ activesupport (= 7.0.3)
15
+ activesupport (7.0.3)
16
+ concurrent-ruby (~> 1.0, >= 1.0.2)
17
+ i18n (>= 1.6, < 2)
18
+ minitest (>= 5.1)
19
+ tzinfo (~> 2.0)
20
+ appraisal (2.2.0)
21
+ bundler
22
+ rake
23
+ thor (>= 0.14.0)
24
+ assertions-eb (1.7.3)
25
+ ast (2.4.2)
26
+ concurrent-ruby (1.1.10)
27
+ database_cleaner (1.8.4)
28
+ i18n (1.10.0)
29
+ concurrent-ruby (~> 1.0)
30
+ minitest (5.16.1)
31
+ parallel (1.22.1)
32
+ parser (3.1.2.0)
33
+ ast (~> 2.4.1)
34
+ rainbow (3.1.1)
35
+ rake (13.0.1)
36
+ regexp_parser (2.5.0)
37
+ rexml (3.2.5)
38
+ rr (1.2.1)
39
+ rubocop (1.30.1)
40
+ parallel (~> 1.10)
41
+ parser (>= 3.1.0.0)
42
+ rainbow (>= 2.2.2, < 4.0)
43
+ regexp_parser (>= 1.8, < 3.0)
44
+ rexml (>= 3.2.5, < 4.0)
45
+ rubocop-ast (>= 1.18.0, < 2.0)
46
+ ruby-progressbar (~> 1.7)
47
+ unicode-display_width (>= 1.4.0, < 3.0)
48
+ rubocop-ast (1.18.0)
49
+ parser (>= 3.1.1.0)
50
+ ruby-progressbar (1.11.0)
51
+ sqlite3 (1.4.2)
52
+ thor (1.0.1)
53
+ tzinfo (2.0.4)
54
+ concurrent-ruby (~> 1.0)
55
+ unicode-display_width (2.1.0)
56
+
57
+ PLATFORMS
58
+ ruby
59
+
60
+ DEPENDENCIES
61
+ acts_as_archival!
62
+ appraisal
63
+ assertions-eb
64
+ database_cleaner
65
+ rake
66
+ rr
67
+ rubocop (~> 1.30.1)
68
+ sqlite3
69
+
70
+ BUNDLED WITH
71
+ 2.1.4
data/README.md CHANGED
@@ -79,6 +79,25 @@ r.archived_at # => nil
79
79
  r.archived? # => false
80
80
  ```
81
81
 
82
+ ### Relations
83
+
84
+ ```ruby
85
+ Hole.create!
86
+ Hole.create!
87
+ Hole.create!
88
+
89
+ holes = Hole.all
90
+
91
+ # All records in the relation will be archived with the same archive_number.
92
+ # Dependent/Destroy relationships will be archived, and callbacks will still be honored.
93
+ holes.archive_all! # => [array of Hole records in the relation]
94
+
95
+ holes.first.archive_number # => "b56876de48a5dcfe71b2c13eec15e4a2"
96
+ holes.last.archive_number # => "b56876de48a5dcfe71b2c13eec15e4a2"
97
+
98
+ holes.unarchive_all! # => [array of Hole records in the relation]
99
+ ```
100
+
82
101
  ### Scopes
83
102
 
84
103
  ``` ruby
@@ -95,9 +114,7 @@ Hole.unarchived.size # => 0
95
114
  ``` ruby
96
115
  h = Hole.create #
97
116
  h.archival? # => true
98
- h.is_archival? # => true # deprecated
99
117
  Hole.archival? # => true
100
- Hole.is_archival? # => true # deprecated
101
118
  ```
102
119
 
103
120
  ### Options
@@ -144,8 +161,8 @@ end
144
161
 
145
162
  #### Halting the callback chain
146
163
 
147
- * Rails 4.1/4.2 - the callback method should return a `false`/`nil` value.
148
- * Rails 5x - the callback should `throw(:abort)`/`raise(:abort)`.
164
+ * Rails 4.2 - the callback method should return a `false`/`nil` value.
165
+ * Rails 5.x - the callback should `throw(:abort)`/`raise(:abort)`.
149
166
 
150
167
  ## Caveats
151
168
 
@@ -190,6 +207,8 @@ ActsAsParanoid and PermanentRecords were both inspirations for this:
190
207
  * Anthony Panozzo
191
208
  * Aaron Milam
192
209
  * Anton Rieder
210
+ * Josh Menden
211
+ * Sergey Gnuskov
193
212
 
194
213
  Thanks!
195
214
 
@@ -5,6 +5,7 @@ require "acts_as_archival/version"
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = "acts_as_archival"
7
7
  gem.summary = "Atomic archiving/unarchiving for ActiveRecord-based apps"
8
+ gem.licenses = ['MIT']
8
9
  gem.version = ActsAsArchival::VERSION
9
10
  gem.authors = ["Joel Meador",
10
11
  "Michael Kuehl",
@@ -14,40 +15,48 @@ Gem::Specification.new do |gem|
14
15
  "Dave Woodward",
15
16
  "Miles Sterrett",
16
17
  "James Hill",
17
- "Maarten Claes"]
18
+ "Maarten Claes",
19
+ "Anthony Panozzo",
20
+ "Aaron Milam",
21
+ "Anton Rieder",
22
+ "Josh Menden",
23
+ "Sergey Gnuskov"]
18
24
  gem.email = ["joel@expectedbehavior.com",
19
25
  "matt@expectedbehavior.com",
20
26
  "jason@expectedbehavior.com",
21
27
  "nathan@expectedbehavior.com"]
22
28
  gem.homepage = "http://github.com/expectedbehavior/acts_as_archival"
23
29
 
30
+ gem.metadata["rubygems_mfa_required"] = "true"
31
+
24
32
  gem.files = `git ls-files`.split("\n")
25
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
26
33
  gem.require_paths = ["lib"]
34
+ gem.required_ruby_version = ">= 2.7.3"
27
35
 
28
- gem.add_dependency "activerecord", ">= 4.1"
36
+ gem.add_dependency "activerecord", ">= 6.1"
29
37
 
30
38
  gem.add_development_dependency "appraisal"
31
39
  gem.add_development_dependency "assertions-eb"
32
40
  gem.add_development_dependency "database_cleaner"
33
41
  gem.add_development_dependency "rake"
34
42
  gem.add_development_dependency "rr"
43
+ gem.add_development_dependency "rubocop", "~> 1.30.1"
35
44
  gem.add_development_dependency "sqlite3"
36
- gem.add_development_dependency "rubocop", "~> 0.47.1"
37
45
 
38
- gem.description = <<-END
39
- *Atomic archiving/unarchiving for ActiveRecord-based apps*
46
+ gem.description =
47
+ <<~END
48
+ *Atomic archiving/unarchiving for ActiveRecord-based apps*
40
49
 
41
- We had the problem that acts_as_paranoid and similar plugins/gems always work on
42
- a record by record basis and made it very difficult to restore records
43
- atomically (or archive them, for that matter).
50
+ We had the problem that acts_as_paranoid and similar plugins/gems always work on
51
+ a record by record basis and made it very difficult to restore records
52
+ atomically (or archive them, for that matter).
44
53
 
45
- Because the archive and unarchive methods are in transactions, and every
46
- archival record involved gets the same archive number upon archiving, you can
47
- easily restore or remove an entire set of records without having to worry about
48
- partial deletion or restoration.
54
+ Because the archive and unarchive methods are in transactions, and every
55
+ archival record involved gets the same archive number upon archiving, you can
56
+ easily restore or remove an entire set of records without having to worry about
57
+ partial deletion or restoration.
49
58
 
50
- Additionally, other plugins generally screw with how destroy/delete work. We
51
- don't because we actually want to be able to destroy records.
52
- END
59
+ Additionally, other plugins generally screw with how destroy/delete work. We
60
+ don't because we actually want to be able to destroy records.
61
+ END
53
62
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 4.1.0"
5
+ gem "rails", "~> 6.1"
6
6
 
7
- gemspec :path => "../"
7
+ gemspec path: "../"
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 4.2.0"
5
+ gem "rails", "~> 7.0"
6
6
 
7
- gemspec :path => "../"
7
+ gemspec path: "../"
@@ -1,5 +1,5 @@
1
1
  module ActsAsArchival
2
2
 
3
- VERSION = "1.3.0".freeze
3
+ VERSION = "2.1.0".freeze
4
4
 
5
5
  end
@@ -15,3 +15,5 @@ else
15
15
  ActiveRecord::Base.send :include, ExpectedBehavior::ActsAsArchival
16
16
  ActiveRecord::Base.send :include, ExpectedBehavior::ActsAsArchivalActiveRecordMethods
17
17
  end
18
+
19
+ ActiveRecord::Relation.send :include, ExpectedBehavior::ActsAsArchivalActiveRecordMethods::ARRelationMethods
@@ -3,13 +3,13 @@ module ExpectedBehavior
3
3
 
4
4
  require "digest/md5"
5
5
 
6
- unless defined?(MissingArchivalColumnError) == "constant" && MissingArchivalColumnError.class == Class
6
+ unless defined?(MissingArchivalColumnError) == "constant" && MissingArchivalColumnError.instance_of?(Class)
7
7
  MissingArchivalColumnError = Class.new(ActiveRecord::ActiveRecordError)
8
8
  end
9
- unless defined?(CouldNotArchiveError) == "constant" && CouldNotArchiveError.class == Class
9
+ unless defined?(CouldNotArchiveError) == "constant" && CouldNotArchiveError.instance_of?(Class)
10
10
  CouldNotArchiveError = Class.new(ActiveRecord::ActiveRecordError)
11
11
  end
12
- unless defined?(CouldNotUnarchiveError) == "constant" && CouldNotUnarchiveError.class == Class
12
+ unless defined?(CouldNotUnarchiveError) == "constant" && CouldNotUnarchiveError.instance_of?(Class)
13
13
  CouldNotUnarchiveError = Class.new(ActiveRecord::ActiveRecordError)
14
14
  end
15
15
 
@@ -37,7 +37,7 @@ module ExpectedBehavior
37
37
  end
38
38
 
39
39
  private def setup_scopes
40
- scope :archived, -> { where.not(archived_at: nil, archive_number: nil) }
40
+ scope :archived, -> { where.not(archived_at: nil).where.not(archive_number: nil) }
41
41
  scope :unarchived, -> { where(archived_at: nil, archive_number: nil) }
42
42
  scope :archived_from_archive_number, (lambda do |head_archive_number|
43
43
  where(["archived_at IS NOT NULL AND archive_number = ?", head_archive_number])
@@ -53,11 +53,7 @@ module ExpectedBehavior
53
53
  end
54
54
 
55
55
  private def setup_activerecord_callbacks(callbackable_actions)
56
- if ActiveSupport::VERSION::MAJOR >= 5
57
- define_callbacks(*[callbackable_actions].flatten)
58
- elsif ActiveSupport::VERSION::MAJOR >= 4
59
- define_callbacks(*[callbackable_actions, { terminator: ->(_, result) { result == false } }].flatten)
60
- end
56
+ define_callbacks(*[callbackable_actions].flatten)
61
57
  end
62
58
 
63
59
  private def define_callback_dsl_methods(callbackable_actions)
@@ -70,6 +66,7 @@ module ExpectedBehavior
70
66
 
71
67
  private def define_callback_dsl_method(callbackable_type, action)
72
68
  # rubocop:disable Security/Eval
69
+ # rubocop:disable Style/DocumentDynamicEvalDefinition
73
70
  eval <<-end_callbacks
74
71
  unless defined?(#{callbackable_type}_#{action})
75
72
  def #{callbackable_type}_#{action}(*args, &blk)
@@ -77,6 +74,7 @@ module ExpectedBehavior
77
74
  end
78
75
  end
79
76
  end_callbacks
77
+ # rubocop:enable Style/DocumentDynamicEvalDefinition
80
78
  # rubocop:enable Security/Eval
81
79
  end
82
80
 
@@ -104,14 +102,6 @@ module ExpectedBehavior
104
102
  !!(archived_at? && archive_number)
105
103
  end
106
104
 
107
- def archive(head_archive_number = nil)
108
- ActiveSupport::Deprecation.warn <<-EOS.strip_heredoc.gsub(/\s+/, " ")
109
- '.archive' is deprecated and will be removed in future versions of acts_as_archival.
110
- Please use '.archive!' instead.
111
- EOS
112
- archive!(head_archive_number)
113
- end
114
-
115
105
  def archive!(head_archive_number = nil)
116
106
  execute_archival_action(:archive) do
117
107
  unless archived?
@@ -124,14 +114,6 @@ module ExpectedBehavior
124
114
  end
125
115
  end
126
116
 
127
- def unarchive(head_archive_number = nil)
128
- ActiveSupport::Deprecation.warn <<-EOS.strip_heredoc.gsub(/\s+/, " ")
129
- '.unarchive' is deprecated and will be removed in future versions of acts_as_archival.
130
- Please use '.unarchive!' instead.
131
- EOS
132
- unarchive!(head_archive_number)
133
- end
134
-
135
117
  def unarchive!(head_archive_number = nil)
136
118
  execute_archival_action(:unarchive) do
137
119
  if archived?
@@ -152,16 +134,15 @@ module ExpectedBehavior
152
134
  AssociationOperation::Unarchive.new(self, head_archive_number).execute
153
135
  end
154
136
 
155
- private def execute_archival_action(action)
137
+ private def execute_archival_action(action, &block)
138
+ result = false
156
139
  self.class.transaction do
157
- begin
158
- success = run_callbacks(action) { yield }
159
- return !!success
160
- rescue => e
161
- handle_archival_action_exception(e)
162
- end
140
+ result = !!run_callbacks(action, &block)
141
+ rescue => e
142
+ handle_archival_action_exception(e)
163
143
  end
164
- false
144
+
145
+ result
165
146
  end
166
147
 
167
148
  private def handle_archival_action_exception(exception)
@@ -12,13 +12,6 @@ module ExpectedBehavior
12
12
  included_modules.include?(ExpectedBehavior::ActsAsArchival::InstanceMethods)
13
13
  end
14
14
 
15
- # rubocop:disable Style/PredicateName
16
- def is_archival?
17
- ActiveSupport::Deprecation.warn(".is_archival? is deprecated in favor of .archival?")
18
- archival?
19
- end
20
- # rubocop:enable Style/PredicateName
21
-
22
15
  end
23
16
 
24
17
  module ARInstanceMethods
@@ -27,12 +20,24 @@ module ExpectedBehavior
27
20
  self.class.archival?
28
21
  end
29
22
 
30
- # rubocop:disable Style/PredicateName
31
- def is_archival?
32
- ActiveSupport::Deprecation.warn("#is_archival? is deprecated in favor of #archival?")
33
- archival?
23
+ end
24
+
25
+ module ARRelationMethods
26
+
27
+ def archive_all!
28
+ error_message = "The #{klass} must implement 'act_on_archivals' in order to call `archive_all!`"
29
+ raise NotImplementedError.new(error_message) unless archival?
30
+
31
+ head_archive_number = Digest::MD5.hexdigest("#{klass}#{Time.now.utc.to_i}")
32
+ each { |record| record.archive!(head_archive_number) }.tap { reset }
33
+ end
34
+
35
+ def unarchive_all!
36
+ error_message = "The #{klass} must implement 'act_on_archivals' in order to call `unarchive_all!`"
37
+ raise NotImplementedError.new(error_message) unless archival?
38
+
39
+ each(&:unarchive!).tap { reset }
34
40
  end
35
- # rubocop:enable Style/PredicateName
36
41
 
37
42
  end
38
43
 
@@ -36,7 +36,11 @@ module ExpectedBehavior
36
36
 
37
37
  def act_on_association(association)
38
38
  key = association.respond_to?(:foreign_key) ? association.foreign_key : association.primary_key_name
39
- scope = association.klass.where(key => model.id)
39
+ scope_conditions = { key => model.id }
40
+ # polymorphic associations need a type so we don't accidentally act on multiple associated objects
41
+ # that have the same ID
42
+ scope_conditions[association.type] = model.class.base_class.name if association.type
43
+ scope = association.klass.where(scope_conditions)
40
44
  act_on_archivals(scope)
41
45
  end
42
46
 
@@ -2,40 +2,21 @@ require_relative "test_helper"
2
2
 
3
3
  class CallbacksTest < ActiveSupport::TestCase
4
4
 
5
- if defined?(ApplicationRecord)
6
- test "can set a value as part of archiving" do
7
- archival = CallbackArchival5.create
8
- archival.set_this_value = "a test string"
9
- assert_nil archival.settable_field
10
- archival.archive!
11
- assert_equal "a test string", archival.reload.settable_field
12
- end
13
-
14
- test "can be halted" do
15
- archival = CallbackArchival5.create
16
- archival.set_this_value = "a test string"
17
- archival.pass_callback = false
18
- assert_nil archival.settable_field
19
- archival.archive!
20
- assert_nil archival.reload.settable_field
21
- end
22
- else
23
- test "can set a value as part of archiving" do
24
- archival = CallbackArchival4.create
25
- archival.set_this_value = "a test string"
26
- assert_nil archival.settable_field
27
- archival.archive!
28
- assert_equal "a test string", archival.reload.settable_field
29
- end
5
+ test "can set a value as part of archiving" do
6
+ archival = CallbackArchival.create
7
+ archival.set_this_value = "a test string"
8
+ assert_nil archival.settable_field
9
+ archival.archive!
10
+ assert_equal "a test string", archival.reload.settable_field
11
+ end
30
12
 
31
- test "can be halted" do
32
- archival = CallbackArchival4.create
33
- archival.set_this_value = "a test string"
34
- archival.pass_callback = false
35
- assert_nil archival.settable_field
36
- archival.archive!
37
- assert_nil archival.reload.settable_field
38
- end
13
+ test "can be halted" do
14
+ archival = CallbackArchival.create
15
+ archival.set_this_value = "a test string"
16
+ archival.pass_callback = false
17
+ assert_nil archival.settable_field
18
+ archival.archive!
19
+ assert_nil archival.reload.settable_field
39
20
  end
40
21
 
41
22
  end
@@ -0,0 +1,11 @@
1
+ # name - string
2
+ # archival_id - integer
3
+ # archive_number - string
4
+ # archived_at - datetime
5
+ class AnotherPolysHolder < ActiveRecord::Base
6
+
7
+ acts_as_archival
8
+
9
+ has_many :polys, dependent: :destroy, as: :archiveable
10
+
11
+ end
@@ -1,4 +1,4 @@
1
- class CallbackArchival4 < ActiveRecord::Base
1
+ class CallbackArchival < ApplicationRecord
2
2
 
3
3
  acts_as_archival
4
4
 
@@ -8,12 +8,15 @@ class CallbackArchival4 < ActiveRecord::Base
8
8
  before_archive :set_value,
9
9
  :conditional_callback_passer
10
10
 
11
- private def set_value
11
+ private
12
+
13
+ def set_value
12
14
  self.settable_field = set_this_value
13
15
  end
14
16
 
15
- private def conditional_callback_passer
16
- pass_callback || pass_callback.nil?
17
+ def conditional_callback_passer
18
+ # we want to throw only for the value false
19
+ throw(:abort) unless pass_callback || pass_callback.nil?
17
20
  end
18
21
 
19
22
  end
@@ -11,6 +11,15 @@ class PolymorphicTest < ActiveSupport::TestCase
11
11
  assert poly.reload.archived?
12
12
  end
13
13
 
14
+ test "does not archive polymorphic association of different item with same id" do
15
+ archival = Archival.create!
16
+ another_polys_holder = AnotherPolysHolder.create!(id: archival.id)
17
+ poly = another_polys_holder.polys.create!
18
+ archival.archive!
19
+
20
+ assert_not poly.reload.archived?
21
+ end
22
+
14
23
  test "unarchive item with polymorphic association" do
15
24
  archive_attributes = {
16
25
  archive_number: "test",
@@ -24,4 +33,18 @@ class PolymorphicTest < ActiveSupport::TestCase
24
33
  assert_not poly.reload.archived?
25
34
  end
26
35
 
36
+ test "does not unarchive polymorphic association of different item with same id" do
37
+ archive_attributes = {
38
+ archive_number: "test",
39
+ archived_at: Time.now
40
+ }
41
+
42
+ archival = Archival.create!(archive_attributes)
43
+ another_polys_holder = AnotherPolysHolder.create!(archive_attributes.merge(id: archival.id))
44
+ poly = another_polys_holder.polys.create!(archive_attributes)
45
+ archival.unarchive!
46
+
47
+ assert poly.reload.archived?
48
+ end
49
+
27
50
  end
@@ -0,0 +1,63 @@
1
+ require_relative "test_helper"
2
+
3
+ class RelationsTest < ActiveSupport::TestCase
4
+
5
+ test "archive_all! archives all records in an AR Association" do
6
+ 3.times { Archival.create! }
7
+
8
+ archivals = Archival.all
9
+ archivals.archive_all!
10
+ assert archivals.first.archived?
11
+ assert archivals.last.archived?
12
+ end
13
+
14
+ test "archive_all! archives all records with the same archival number" do
15
+ 3.times { Archival.create! }
16
+
17
+ archivals = Archival.all
18
+ archivals.archive_all!
19
+ assert_equal archivals.first.archive_number, archivals.last.archive_number
20
+ end
21
+
22
+ test "archive_all! archives children records" do
23
+ 3.times do
24
+ parent = Archival.create!
25
+ 2.times do
26
+ parent.archivals.create!
27
+ end
28
+ end
29
+
30
+ parents = Archival.all
31
+ parents.archive_all!
32
+
33
+ assert parents.first.archivals.first.archived?
34
+ assert parents.first.archivals.last.archived?
35
+ end
36
+
37
+ test "unarchive_all! unarchives all records in an AR Assocation" do
38
+ 3.times { Archival.create! }
39
+
40
+ archivals = Archival.all
41
+ archivals.archive_all!
42
+ archivals.unarchive_all!
43
+ assert_not archivals.first.archived?
44
+ assert_not archivals.last.archived?
45
+ end
46
+
47
+ test "unarchive_all! unarchives children records" do
48
+ 3.times do
49
+ parent = Archival.create!
50
+ 2.times do
51
+ parent.archivals.create!
52
+ end
53
+ end
54
+
55
+ parents = Archival.all
56
+ parents.archive_all!
57
+ parents.unarchive_all!
58
+
59
+ assert_not parents.first.archivals.first.archived?
60
+ assert_not parents.first.archivals.last.archived?
61
+ end
62
+
63
+ end
@@ -12,20 +12,4 @@ class RespondsTest < ActiveSupport::TestCase
12
12
  assert_not Plain.new.archival?
13
13
  end
14
14
 
15
- ### Deprecation Zone ###
16
-
17
- test "archival class responds correctly to 'is_archival?'" do
18
- ActiveSupport::Deprecation.silence do
19
- assert Archival.is_archival?
20
- assert_not Plain.is_archival?
21
- end
22
- end
23
-
24
- test "archival object responds correctly to 'is_archival?'" do
25
- ActiveSupport::Deprecation.silence do
26
- assert Archival.new.is_archival?
27
- assert_not Plain.new.is_archival?
28
- end
29
- end
30
-
31
15
  end
data/test/schema.rb CHANGED
@@ -1,4 +1,11 @@
1
1
  ActiveRecord::Schema.define(version: 1) do
2
+ create_table :another_polys_holders, force: true do |t|
3
+ t.column :name, :string
4
+ t.column :archival_id, :integer
5
+ t.column :archive_number, :string
6
+ t.column :archived_at, :datetime
7
+ end
8
+
2
9
  create_table :archivals, force: true do |t|
3
10
  t.column :name, :string
4
11
  t.column :archival_id, :integer
@@ -69,13 +76,7 @@ ActiveRecord::Schema.define(version: 1) do
69
76
  t.column :archived_at, :datetime
70
77
  end
71
78
 
72
- create_table :callback_archival4s, force: true do |t|
73
- t.column :settable_field, :string
74
- t.column :archive_number, :string
75
- t.column :archived_at, :datetime
76
- end
77
-
78
- create_table :callback_archival5s, force: true do |t|
79
+ create_table :callback_archivals, force: true do |t|
79
80
  t.column :settable_field, :string
80
81
  t.column :archive_number, :string
81
82
  t.column :archived_at, :datetime
data/test/scope_test.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  require_relative "test_helper"
2
3
 
3
4
  class ScopeTest < ActiveSupport::TestCase
@@ -50,16 +51,12 @@ class ScopeTest < ActiveSupport::TestCase
50
51
  end
51
52
 
52
53
  test "table_name is set to 'legacy'" do
53
- # ActiveRecord 4.2 changed the output by one space (╯°□°)╯︵ ┻━┻
54
- spaces = if (ActiveRecord.version <=> Gem::Version.new("4.2.0")) >= 0
55
- " "
56
- else
57
- " "
58
- end
59
- archived_sql = "SELECT \"legacy\".* FROM \"legacy\"#{spaces}" \
60
- 'WHERE ("legacy"."archived_at" IS NOT NULL) AND ("legacy"."archive_number" IS NOT NULL)'
61
- unarchived_sql = "SELECT \"legacy\".* FROM \"legacy\"#{spaces}" \
62
- 'WHERE "legacy"."archived_at" IS NULL AND "legacy"."archive_number" IS NULL'
54
+ archived_sql =
55
+ "SELECT \"legacy\".* FROM \"legacy\" " \
56
+ 'WHERE "legacy"."archived_at" IS NOT NULL AND "legacy"."archive_number" IS NOT NULL'
57
+
58
+ unarchived_sql = "SELECT \"legacy\".* FROM \"legacy\" " \
59
+ 'WHERE "legacy"."archived_at" IS NULL AND "legacy"."archive_number" IS NULL'
63
60
  assert_equal archived_sql, ArchivalTableName.archived.to_sql
64
61
  assert_equal unarchived_sql, ArchivalTableName.unarchived.to_sql
65
62
  end
data/test/test_helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__) + "/../lib")
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib")
2
2
  require "bundler/setup"
3
3
  require "minitest/autorun"
4
4
  require "minitest/pride"
@@ -22,7 +22,7 @@ end
22
22
 
23
23
  def setup_logging
24
24
  require "logger"
25
- logfile = File.dirname(__FILE__) + "/debug.log"
25
+ logfile = "#{File.dirname(__FILE__)}/debug.log"
26
26
  ActiveRecord::Base.logger = Logger.new(logfile)
27
27
  end
28
28
 
@@ -43,13 +43,14 @@ def sqlite_config
43
43
  end
44
44
 
45
45
  def create_test_tables
46
- schema_file = File.dirname(__FILE__) + "/schema.rb"
46
+ schema_file = "#{File.dirname(__FILE__)}/schema.rb"
47
47
  puts "** Loading schema for SQLite"
48
48
  ActiveRecord::Base.establish_connection(sqlite_config)
49
49
  load(schema_file) if File.exist?(schema_file)
50
50
  end
51
51
 
52
52
  BASE_FIXTURE_CLASSES = [
53
+ :another_polys_holder,
53
54
  :archival,
54
55
  :archival_kid,
55
56
  :archival_grandkid,
@@ -60,17 +61,10 @@ BASE_FIXTURE_CLASSES = [
60
61
  :missing_archive_number,
61
62
  :plain,
62
63
  :poly,
63
- :readonly_when_archived
64
- ].freeze
65
-
66
- RAILS_4_FIXTURE_CLASSES = [
67
- :callback_archival_4
68
- ].freeze
69
-
70
- RAILS_5_FIXTURE_CLASSES = [
64
+ :readonly_when_archived,
71
65
  :application_record,
72
66
  :application_record_row,
73
- :callback_archival_5
67
+ :callback_archival
74
68
  ].freeze
75
69
 
76
70
  def require_test_classes
@@ -78,14 +72,9 @@ def require_test_classes
78
72
  inflect.irregular "poly", "polys"
79
73
  end
80
74
 
81
- fixtures = if ActiveRecord::VERSION::MAJOR >= 4
82
- RAILS_5_FIXTURE_CLASSES + BASE_FIXTURE_CLASSES
83
- else
84
- RAILS_4_FIXTURE_CLASSES + BASE_FIXTURE_CLASSES
85
- end
86
-
87
- fixtures += BASE_FIXTURE_CLASSES
88
- fixtures.each { |test_class_file| require_relative "fixtures/#{test_class_file}" }
75
+ BASE_FIXTURE_CLASSES.each do |test_class_file|
76
+ require_relative "fixtures/#{test_class_file}"
77
+ end
89
78
  end
90
79
 
91
80
  prepare_for_tests
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_archival
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Meador
@@ -13,10 +13,15 @@ authors:
13
13
  - Miles Sterrett
14
14
  - James Hill
15
15
  - Maarten Claes
16
- autorequire:
16
+ - Anthony Panozzo
17
+ - Aaron Milam
18
+ - Anton Rieder
19
+ - Josh Menden
20
+ - Sergey Gnuskov
21
+ autorequire:
17
22
  bindir: bin
18
23
  cert_chain: []
19
- date: 2017-10-21 00:00:00.000000000 Z
24
+ date: 2022-06-21 00:00:00.000000000 Z
20
25
  dependencies:
21
26
  - !ruby/object:Gem::Dependency
22
27
  name: activerecord
@@ -24,14 +29,14 @@ dependencies:
24
29
  requirements:
25
30
  - - ">="
26
31
  - !ruby/object:Gem::Version
27
- version: '4.1'
32
+ version: '6.1'
28
33
  type: :runtime
29
34
  prerelease: false
30
35
  version_requirements: !ruby/object:Gem::Requirement
31
36
  requirements:
32
37
  - - ">="
33
38
  - !ruby/object:Gem::Version
34
- version: '4.1'
39
+ version: '6.1'
35
40
  - !ruby/object:Gem::Dependency
36
41
  name: appraisal
37
42
  requirement: !ruby/object:Gem::Requirement
@@ -103,33 +108,33 @@ dependencies:
103
108
  - !ruby/object:Gem::Version
104
109
  version: '0'
105
110
  - !ruby/object:Gem::Dependency
106
- name: sqlite3
111
+ name: rubocop
107
112
  requirement: !ruby/object:Gem::Requirement
108
113
  requirements:
109
- - - ">="
114
+ - - "~>"
110
115
  - !ruby/object:Gem::Version
111
- version: '0'
116
+ version: 1.30.1
112
117
  type: :development
113
118
  prerelease: false
114
119
  version_requirements: !ruby/object:Gem::Requirement
115
120
  requirements:
116
- - - ">="
121
+ - - "~>"
117
122
  - !ruby/object:Gem::Version
118
- version: '0'
123
+ version: 1.30.1
119
124
  - !ruby/object:Gem::Dependency
120
- name: rubocop
125
+ name: sqlite3
121
126
  requirement: !ruby/object:Gem::Requirement
122
127
  requirements:
123
- - - "~>"
128
+ - - ">="
124
129
  - !ruby/object:Gem::Version
125
- version: 0.47.1
130
+ version: '0'
126
131
  type: :development
127
132
  prerelease: false
128
133
  version_requirements: !ruby/object:Gem::Requirement
129
134
  requirements:
130
- - - "~>"
135
+ - - ">="
131
136
  - !ruby/object:Gem::Version
132
- version: 0.47.1
137
+ version: '0'
133
138
  description: |
134
139
  *Atomic archiving/unarchiving for ActiveRecord-based apps*
135
140
 
@@ -142,7 +147,7 @@ description: |
142
147
  easily restore or remove an entire set of records without having to worry about
143
148
  partial deletion or restoration.
144
149
 
145
- Additionally, other plugins generally screw with how destroy/delete work. We
150
+ Additionally, other plugins generally screw with how destroy/delete work. We
146
151
  don't because we actually want to be able to destroy records.
147
152
  email:
148
153
  - joel@expectedbehavior.com
@@ -160,14 +165,13 @@ files:
160
165
  - Appraisals
161
166
  - CHANGELOG.md
162
167
  - Gemfile
168
+ - Gemfile.lock
163
169
  - LICENSE
164
170
  - README.md
165
171
  - Rakefile
166
172
  - acts_as_archival.gemspec
167
- - gemfiles/rails_4.1.gemfile
168
- - gemfiles/rails_4.2.gemfile
169
- - gemfiles/rails_5.0.gemfile
170
- - gemfiles/rails_5.1.gemfile
173
+ - gemfiles/rails_6.1.gemfile
174
+ - gemfiles/rails_7.0.gemfile
171
175
  - init.rb
172
176
  - lib/acts_as_archival.rb
173
177
  - lib/acts_as_archival/version.rb
@@ -184,14 +188,14 @@ files:
184
188
  - test/callbacks_test.rb
185
189
  - test/column_test.rb
186
190
  - test/deep_nesting_test.rb
191
+ - test/fixtures/another_polys_holder.rb
187
192
  - test/fixtures/application_record.rb
188
193
  - test/fixtures/application_record_row.rb
189
194
  - test/fixtures/archival.rb
190
195
  - test/fixtures/archival_grandkid.rb
191
196
  - test/fixtures/archival_kid.rb
192
197
  - test/fixtures/archival_table_name.rb
193
- - test/fixtures/callback_archival_4.rb
194
- - test/fixtures/callback_archival_5.rb
198
+ - test/fixtures/callback_archival.rb
195
199
  - test/fixtures/exploder.rb
196
200
  - test/fixtures/independent_archival.rb
197
201
  - test/fixtures/missing_archive_number.rb
@@ -201,6 +205,7 @@ files:
201
205
  - test/fixtures/readonly_when_archived.rb
202
206
  - test/polymorphic_test.rb
203
207
  - test/readonly_when_archived_test.rb
208
+ - test/relations_test.rb
204
209
  - test/responds_test.rb
205
210
  - test/schema.rb
206
211
  - test/scope_test.rb
@@ -208,9 +213,11 @@ files:
208
213
  - test/through_association_test.rb
209
214
  - test/transaction_test.rb
210
215
  homepage: http://github.com/expectedbehavior/acts_as_archival
211
- licenses: []
212
- metadata: {}
213
- post_install_message:
216
+ licenses:
217
+ - MIT
218
+ metadata:
219
+ rubygems_mfa_required: 'true'
220
+ post_install_message:
214
221
  rdoc_options: []
215
222
  require_paths:
216
223
  - lib
@@ -218,46 +225,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
218
225
  requirements:
219
226
  - - ">="
220
227
  - !ruby/object:Gem::Version
221
- version: '0'
228
+ version: 2.7.3
222
229
  required_rubygems_version: !ruby/object:Gem::Requirement
223
230
  requirements:
224
231
  - - ">="
225
232
  - !ruby/object:Gem::Version
226
233
  version: '0'
227
234
  requirements: []
228
- rubyforge_project:
229
- rubygems_version: 2.5.1
230
- signing_key:
235
+ rubygems_version: 3.3.3
236
+ signing_key:
231
237
  specification_version: 4
232
238
  summary: Atomic archiving/unarchiving for ActiveRecord-based apps
233
- test_files:
234
- - test/ambiguous_table_test.rb
235
- - test/application_record_test.rb
236
- - test/associations_test.rb
237
- - test/basic_test.rb
238
- - test/callbacks_test.rb
239
- - test/column_test.rb
240
- - test/deep_nesting_test.rb
241
- - test/fixtures/application_record.rb
242
- - test/fixtures/application_record_row.rb
243
- - test/fixtures/archival.rb
244
- - test/fixtures/archival_grandkid.rb
245
- - test/fixtures/archival_kid.rb
246
- - test/fixtures/archival_table_name.rb
247
- - test/fixtures/callback_archival_4.rb
248
- - test/fixtures/callback_archival_5.rb
249
- - test/fixtures/exploder.rb
250
- - test/fixtures/independent_archival.rb
251
- - test/fixtures/missing_archive_number.rb
252
- - test/fixtures/missing_archived_at.rb
253
- - test/fixtures/plain.rb
254
- - test/fixtures/poly.rb
255
- - test/fixtures/readonly_when_archived.rb
256
- - test/polymorphic_test.rb
257
- - test/readonly_when_archived_test.rb
258
- - test/responds_test.rb
259
- - test/schema.rb
260
- - test/scope_test.rb
261
- - test/test_helper.rb
262
- - test/through_association_test.rb
263
- - test/transaction_test.rb
239
+ test_files: []
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 5.0.0"
6
-
7
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 5.1.0"
6
-
7
- gemspec :path => "../"
@@ -1,23 +0,0 @@
1
- # necessary for ApplicationRecord
2
- if defined?(ApplicationRecord)
3
- class CallbackArchival5 < ApplicationRecord
4
-
5
- acts_as_archival
6
-
7
- attr_accessor :set_this_value,
8
- :pass_callback
9
-
10
- before_archive :set_value,
11
- :conditional_callback_passer
12
-
13
- private def set_value
14
- self.settable_field = set_this_value
15
- end
16
-
17
- private def conditional_callback_passer
18
- # we want to throw only for the value false
19
- throw(:abort) unless pass_callback || pass_callback.nil?
20
- end
21
-
22
- end
23
- end