anony 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03bd877b38fb5c593ed8c6794b24009d6b7beaa2d6000d17f11940240d0a6646
4
- data.tar.gz: 529967ad09defd65b21e2955f9e4da5739c998102f9ea3cc30c9003e47aaefb4
3
+ metadata.gz: c5b03c5de571df806eaa5a0d76b64a46cc40a0d75d05e253d9da96232b9514a5
4
+ data.tar.gz: '09865f7078ce1503d9334ef23a6e27139a64f7892882141183c0d5691293e293'
5
5
  SHA512:
6
- metadata.gz: 0f70bd0ccb7371ec344171633e58ab20346de16051076a856e41a58af0df2040015cedd84fbc7670846292b966d9a7d4ae99e56b645028e6797e3487b09977ac
7
- data.tar.gz: f7759dd9c2d09a10af83acfd55d60dab29674f2dd12196af145885a94a47308026bdf3fbbe4ad9853d59aa6a093b0e310455ae69f0f416216eb98528ed6b4c1d
6
+ metadata.gz: 0bdca0bc5c85cd515253df30ef628db7be96b9969e8a5ddab66d6c5e032132b2e3143f2d96dd772afa83ea709ce5807caa876f93de37abbe1b18e5e4b0511c0c
7
+ data.tar.gz: 302538470c1416595982f562dd33545d7e41df85b62c9965a81b155d838e6c77c4ed852b606eeb6d351733c8ffae00f179f5739e16fb5f877c805a83635dd238
@@ -19,8 +19,8 @@ jobs:
19
19
  tests:
20
20
  strategy:
21
21
  matrix:
22
- ruby-version: [3.0, 3.1, 3.2, 3.3]
23
- rails-version: [6.1, 7.0, 7.1]
22
+ ruby-version: [3.1, 3.2, 3.3]
23
+ rails-version: [7.0, 7.1, 7.2]
24
24
  runs-on: ubuntu-latest
25
25
  env:
26
26
  RAILS_VERSION: ${{ matrix.rails-version }}
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0.2
1
+ 3.3.4
data/CHANGELOG.md CHANGED
@@ -1,91 +1,106 @@
1
- # v1.3.1
1
+ # Changelog
2
+
3
+ ## v1.5.0
4
+
5
+ - Drop support for EOL Ruby 3.0 (EOL since April 1st 2024)
6
+ - Drop support for EOL Rails 6.1 (EOL since October 1st 2024)
7
+ - Add support for Rails 7.2
8
+ - Fix Dependabot updates
9
+ - Fix `NoMethodError` when calling `selector_for?` or `anonymise_for!` on a model class without an `anonymise` config block
10
+ - Include reference to anonymised record in `Anony::Result` to allow easier matching of results to records when using selectors.
11
+
12
+ ## v1.4.0
13
+
14
+ - Update cops to use `Base` rather than `Cop` as a base class as the latter has been deprecated
15
+
16
+ ## v1.3.1
2
17
 
3
18
  - Update gc_ruboconfig development dependency to v5.0.0
4
19
 
5
- # v1.3.0
20
+ ## v1.3.0
6
21
 
7
22
  - Add support for Ruby 3.2, 3.3 and Rails 7.1
8
23
  - Drop support for EOL Ruby 2.6, 2.7 and Rails 6.0
9
24
 
10
- # v1.2.0
25
+ ## v1.2.0
11
26
 
12
27
  - Add support for configuring multiple superclasses for the `DefineDeletionStrategy` cop [#98](https://github.com/gocardless/anony/pull/98)
13
28
  - Introduce helpers (selectors) for anonymising all a subject's records [#97](https://github.com/gocardless/anony/pull/97)
14
29
 
15
- # v1.1.0
30
+ ## v1.1.0
16
31
 
17
32
  - Drop ruby 2.4 and 2.5 support
18
33
  - Unpin ActiveSupport for Rails 7
19
34
 
20
- # v1.0.2
35
+ ## v1.0.2
21
36
 
22
37
  - Unpin ActiveSupport for Rails 6
23
38
 
24
- # v1.0.1
39
+ ## v1.0.1
25
40
 
26
- * Throw a more useful exception when calling .anonymise without config [#53](https://github.com/gocardless/anony/pull/53)
41
+ - Throw a more useful exception when calling .anonymise without config [#53](https://github.com/gocardless/anony/pull/53)
27
42
 
28
- # v1.0.0
43
+ ## v1.0.0
29
44
 
30
- * Create a result object when calling `anonymise!` [#44](https://github.com/gocardless/anony/pull/44)
45
+ - Create a result object when calling `anonymise!` [#44](https://github.com/gocardless/anony/pull/44)
31
46
 
32
- # v0.8.0
47
+ ## v0.8.0
33
48
 
34
- * Improve the documentation [#45](https://github.com/gocardless/anony/pull/45)
35
- * Rename fields strategy to overwrite [#46](https://github.com/gocardless/anony/pull/46)
49
+ - Improve the documentation [#45](https://github.com/gocardless/anony/pull/45)
50
+ - Rename fields strategy to overwrite [#46](https://github.com/gocardless/anony/pull/46)
36
51
 
37
- # v0.7.3
52
+ ## v0.7.3
38
53
 
39
- * Allow customising the model superclass for the `DefineDeletionStrategy` cop [#36](https://github.com/gocardless/anony/pull/36)
54
+ - Allow customising the model superclass for the `DefineDeletionStrategy` cop [#36](https://github.com/gocardless/anony/pull/36)
40
55
 
41
- # v0.7.2
56
+ ## v0.7.2
42
57
 
43
- * Add ability to prevent anonymisation with `skip_if` [#25](https://github.com/gocardless/anony/pull/25)
58
+ - Add ability to prevent anonymisation with `skip_if` [#25](https://github.com/gocardless/anony/pull/25)
44
59
 
45
- # v0.7.1
60
+ ## v0.7.1
46
61
 
47
- * Fix breakage when applying a strategy multiple times [#35](https://github.com/gocardless/anony/pull/35)
62
+ - Fix breakage when applying a strategy multiple times [#35](https://github.com/gocardless/anony/pull/35)
48
63
 
49
- # v0.7.0
64
+ ## v0.7.0
50
65
 
51
- * **BREAKING** Switch to nesting field-level configuration in a `fields` block
66
+ - **BREAKING*- Switch to nesting field-level configuration in a `fields` block
52
67
  [#32](https://github.com/gocardless/anony/pull/32). This should just be a case of
53
68
  switching `anonymise { ... }` to `anonymise { fields { ... } }` in most cases, but for
54
69
  more details please check the README.
55
- * **BREAKING** `Anony::Strategies.register` was renamed to `Anony::FieldLevelStrategies.register`.
70
+ - **BREAKING*- `Anony::Strategies.register` was renamed to `Anony::FieldLevelStrategies.register`.
56
71
 
57
- # v0.6.0
72
+ ## v0.6.0
58
73
 
59
- * Use ActiveRecord::Persistence#current_time_from_proper_timezone [#34](https://github.com/gocardless/anony/pull/34)
74
+ - Use ActiveRecord::Persistence#current_time_from_proper_timezone [#34](https://github.com/gocardless/anony/pull/34)
60
75
 
61
- # v0.5.0
76
+ ## v0.5.0
62
77
 
63
- * Make `valid_anonymisation?` a class method [#24](https://github.com/gocardless/anony/pull/24)
64
- * Allow dynamic registration of Anony::Strategies [#23](https://github.com/gocardless/anony/pull/23)
65
- * Only apply anonymisation strategies to columns that are defined [#28](https://github.com/gocardless/anony/pull/28)
78
+ - Make `valid_anonymisation?` a class method [#24](https://github.com/gocardless/anony/pull/24)
79
+ - Allow dynamic registration of Anony::Strategies [#23](https://github.com/gocardless/anony/pull/23)
80
+ - Only apply anonymisation strategies to columns that are defined [#28](https://github.com/gocardless/anony/pull/28)
66
81
 
67
- # v0.4.0
82
+ ## v0.4.0
68
83
 
69
- * Allow using a constant value as a strategy [#19](https://github.com/gocardless/anony/pull/19)
84
+ - Allow using a constant value as a strategy [#19](https://github.com/gocardless/anony/pull/19)
70
85
 
71
- # v0.3.1
86
+ ## v0.3.1
72
87
 
73
- * Fix `anonymised_at` column [#13](https://github.com/gocardless/anony/pull/13)
88
+ - Fix `anonymised_at` column [#13](https://github.com/gocardless/anony/pull/13)
74
89
 
75
- # v0.3.0
90
+ ## v0.3.0
76
91
 
77
- * Support `anonymised_at` column [#9](https://github.com/gocardless/anony/pull/9)
92
+ - Support `anonymised_at` column [#9](https://github.com/gocardless/anony/pull/9)
78
93
 
79
- # v0.2.1
94
+ ## v0.2.1
80
95
 
81
- * Fix relative require in DefineDeletionStrategy cop [#8](https://github.com/gocardless/anony/pull/8)
96
+ - Fix relative require in DefineDeletionStrategy cop [#8](https://github.com/gocardless/anony/pull/8)
82
97
 
83
- # v0.2
98
+ ## v0.2
84
99
 
85
- * Improve the README [#5](https://github.com/gocardless/anony/pulls/5)
86
- * Use Rubocop for testing code style [#6](https://github.com/gocardless/anony/pulls/6)
87
- * Add an [RSpec helper](https://github.com/gocardless/anony/blob/v0.2/README.md#testing) for testing [#7](https://github.com/gocardless/anony/pulls/7)
100
+ - Improve the README [#5](https://github.com/gocardless/anony/pulls/5)
101
+ - Use Rubocop for testing code style [#6](https://github.com/gocardless/anony/pulls/6)
102
+ - Add an [RSpec helper](https://github.com/gocardless/anony/blob/v0.2/README.md#testing) for testing [#7](https://github.com/gocardless/anony/pulls/7)
88
103
 
89
- # v0.1
104
+ ## v0.1
90
105
 
91
106
  Initial release.
data/Gemfile CHANGED
@@ -6,6 +6,3 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
7
  # Specify your gem's dependencies in anony.gemspec
8
8
  gemspec
9
-
10
- gem "activerecord", "~> #{ENV['RAILS_VERSION']}" if ENV["RAILS_VERSION"]
11
- gem "activesupport", "~> #{ENV['RAILS_VERSION']}" if ENV["RAILS_VERSION"]
data/README.md CHANGED
@@ -17,6 +17,7 @@ class User < ActiveRecord::Base
17
17
  end
18
18
  end
19
19
  ```
20
+
20
21
  ```ruby
21
22
  irb(main):001:0> user = User.find(1)
22
23
  => #<User id="1" first_name="Alice">
@@ -120,9 +121,10 @@ When a model is anonymised, an `Anony::Result` is returned. This allows the libr
120
121
 
121
122
  The result object has 3 attributes:
122
123
 
123
- * `status` - If the model was `destroyed`, `overwritten`, `skipped` or the operation `failed`
124
- * `fields` - In the event the model was `overwritten`, the fields that were updated (excludes timestamps)
125
- * `error` - In the event the anonymisation `failed`, then the associated error. Note only rescues the following errors: `ActiveRecord::RecordNotSaved`, `ActiveRecord::RecordNotDestroyed`. Anything else is thrown.
124
+ * `status` - If the model was `destroyed`, `overwritten`, `skipped` or the operation `failed`
125
+ * `fields` - In the event the model was `overwritten`, the fields that were updated (excludes timestamps)
126
+ * `error` - In the event the anonymisation `failed`, then the associated error. Note only rescues the following errors: `ActiveRecord::RecordNotSaved`, `ActiveRecord::RecordNotDestroyed`. Anything else is thrown.
127
+ * `record` - The model instance that was anonymised to produce this result.
126
128
 
127
129
  For convenience, the result object can also be queried with `destroyed?`, `overwritten?`, `skipped?` and `failed?`, so that it can be directly interrogated or used in a `switch case` with the `status` property.
128
130
 
@@ -130,11 +132,11 @@ For convenience, the result object can also be queried with `destroyed?`, `overw
130
132
 
131
133
  This library ships with a number of built-in strategies:
132
134
 
133
- * **nilable** overwrites the field with `nil`
134
- * **hex** overwrites the field with random hexadecimal characters
135
- * **email** overwrites the field with an email
136
- * **phone_number** overwrites the field with a dummy phone number
137
- * **current_datetime** overwrites the field with `Time.zone.now` (using [ActiveSupport's TimeWithZone](https://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html#method-i-now))
135
+ * **nilable** overwrites the field with `nil`
136
+ * **hex** overwrites the field with random hexadecimal characters
137
+ * **email** overwrites the field with an email
138
+ * **phone_number** overwrites the field with a dummy phone number
139
+ * **current_datetime** overwrites the field with `Time.zone.now` (using [ActiveSupport's TimeWithZone](https://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html#method-i-now))
138
140
 
139
141
  ### Custom strategies
140
142
 
@@ -204,7 +206,7 @@ class Manager < ApplicationRecord
204
206
  end
205
207
  ```
206
208
 
207
- ```
209
+ ```ruby
208
210
  irb(main):001:0> manager = Manager.first
209
211
  => #<Manager id=42>
210
212
 
@@ -232,7 +234,7 @@ class Manager < ApplicationRecord
232
234
  end
233
235
  ```
234
236
 
235
- ```
237
+ ```ruby
236
238
  irb(main):001:0> manager = Manager.first
237
239
  => #<Manager id=42>
238
240
 
@@ -278,6 +280,7 @@ ModelName.anonymise_for!(:user_id, "user_1234")
278
280
  If you attempt to anonymise records with a selector that has not been defined it
279
281
  will throw an error.
280
282
 
283
+ When anonymising models using selectors, an array of `Anony::Result` objects will be returned, one result per anonymised record in the model. These results contain a reference to the record that was anonymised to produce that result, so that changes made or failures can easily be linked back to the specific record.
281
284
 
282
285
  ### Identifying anonymised records
283
286
 
@@ -346,7 +349,7 @@ end
346
349
 
347
350
  The result object will indicate the model was skipped:
348
351
 
349
- ```
352
+ ```ruby
350
353
  irb(main):001:0> manager = Manager.find(1)
351
354
  => #<Manager id=1>
352
355
 
@@ -366,7 +369,7 @@ available). If your configuration is incomplete, calling `#anonymise!` will rais
366
369
  `FieldsException` and will not return an `Anony:Result` object. This is perceived
367
370
  to a critical error as anony cannot safely anonymise the model.
368
371
 
369
- ```
372
+ ```ruby
370
373
  irb(main):001:0> manager = Manager.find(1)
371
374
  => #<Manager id=1>
372
375
 
@@ -407,7 +410,6 @@ Anony::Config.ignore_fields(:id, :created_at, :updated_at)
407
410
  By default, `Config.ignore_fields` is an empty array and all fields are considered
408
411
  anonymisable.
409
412
 
410
-
411
413
  ## Testing
412
414
 
413
415
  This library ships with a set of useful RSpec examples for your specs. Just require them
@@ -474,7 +476,7 @@ require:
474
476
  This cop ensures that all models in your application have defined an `anonymise` block.
475
477
  The output looks like this:
476
478
 
477
- ```
479
+ ```text
478
480
  app/models/employee.rb:7:1: W: Lint/DefineDeletionStrategy:
479
481
  Define .anonymise for Employee, see https://github.com/gocardless/anony/blob/master/README.md for details:
480
482
  class Employee < ApplicationRecord ...
@@ -490,17 +492,17 @@ Lint/DefineDeletionStrategy:
490
492
  ```
491
493
 
492
494
  If your models use multiple superclasses, you can specify a list of superclasses in your `.rubocop.yml`. Note that you will have to specify `ApplicationRecord` explicitly in this list should you want to lint all models which inherit from `ApplicationRecord`.
495
+
493
496
  ```yml
494
497
  Lint/DefineDeletionStrategy:
495
- ModelSuperclass:
498
+ ModelSuperclass:
496
499
  - Acme::Record
497
500
  - UmbrellaCorp::Record
498
-
499
501
  ```
500
502
 
501
503
  ## License & Contributing
502
504
 
503
505
  * Anony is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
504
- * Bug reports and pull requests are welcome on GitHub at https://github.com/gocardless/anony.
506
+ * Bug reports and pull requests are welcome on GitHub at <https://github.com/gocardless/anony>.
505
507
 
506
508
  GoCardless ♥ open source. If you do too, come [join us](https://gocardless.com/about/jobs).
data/anony.gemspec CHANGED
@@ -4,9 +4,6 @@ lib = File.expand_path("lib", __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require "anony/version"
6
6
 
7
- RAILS_VERSION_LOWER_BOUND = ">= 6.1"
8
- RAILS_VERSION_UPPER_BOUND = "< 8"
9
-
10
7
  Gem::Specification.new do |spec|
11
8
  spec.name = "anony"
12
9
  spec.version = Anony::VERSION
@@ -25,18 +22,24 @@ Gem::Specification.new do |spec|
25
22
  end
26
23
  spec.require_paths = ["lib"]
27
24
 
28
- spec.required_ruby_version = ">= 3.0"
25
+ spec.required_ruby_version = ">= 3.1"
29
26
 
30
27
  spec.add_development_dependency "bundler", "~> 2"
28
+ spec.add_development_dependency "database_cleaner-active_record", "~> 2.2"
31
29
  spec.add_development_dependency "gc_ruboconfig", "~> 5.0.0"
32
30
  spec.add_development_dependency "rspec", "~> 3.9"
33
31
  spec.add_development_dependency "rspec-github", "~> 2.4.0"
34
32
  spec.add_development_dependency "yard", "~> 0.9.20"
35
33
 
36
34
  # For integration testing
37
- spec.add_development_dependency "sqlite3", "~> 1.6.1"
38
-
39
- spec.add_dependency "activerecord", RAILS_VERSION_LOWER_BOUND, RAILS_VERSION_UPPER_BOUND
40
- spec.add_dependency "activesupport", RAILS_VERSION_LOWER_BOUND, RAILS_VERSION_UPPER_BOUND
35
+ spec.add_development_dependency "sqlite3", "~> 2.1.0"
36
+
37
+ if ENV["RAILS_VERSION"]
38
+ spec.add_dependency "activerecord", "~> #{ENV['RAILS_VERSION']}"
39
+ spec.add_dependency "activesupport", "~> #{ENV['RAILS_VERSION']}"
40
+ else
41
+ spec.add_dependency "activerecord", ">= 7.0", "< 8"
42
+ spec.add_dependency "activesupport", ">= 7.0", "< 8"
43
+ end
41
44
  spec.metadata["rubygems_mfa_required"] = "true"
42
45
  end
@@ -4,14 +4,14 @@ Our goal as Anony maintainers is for the library to be compatible with all suppo
4
4
 
5
5
  Specifically, any CRuby/MRI version that has not received an End of Life notice ([e.g. this notice for Ruby 2.1](https://www.ruby-lang.org/en/news/2017/04/01/support-of-ruby-2-1-has-ended/)) is supported. Similarly, any version of Rails listed as currently supported on [this page](http://guides.rubyonrails.org/maintenance_policy.html) is one we aim to support in Anony.
6
6
 
7
- To that end, [our build matrix](../.circleci/config.yml) includes all these versions.
7
+ To that end, [our build matrix](../.github/workflows/test.yml) includes all these versions.
8
8
 
9
9
  Any time Anony doesn't work on a supported combination of Ruby and Rails, it's a bug, and can be reported [here](https://github.com/gocardless/Anony/issues).
10
10
 
11
- # Deprecation
11
+ ## Deprecation
12
12
 
13
- Whenever a version of Ruby or Rails falls out of support, we will mirror that change in Anony by updating the build matrix and releasing a new major version.
13
+ Whenever a version of Ruby or Rails falls out of support, we will mirror that change in Anony by updating the build matrix and releasing a new minor version.
14
14
 
15
15
  At that point, we will close any issues that only affect the unsupported version, and may choose to remove any workarounds from the code that are only necessary for the unsupported version.
16
16
 
17
- We will then bump the major version of Anony, to indicate the break in compatibility. Even if the new version of Anony happens to work on the unsupported version of Ruby or Rails, we consider compatibility to be broken at this point.
17
+ We will then bump the minor version of Anony, to indicate the break in compatibility. Even if the new version of Anony happens to work on the unsupported version of Ruby or Rails, we consider compatibility to be broken at this point. We do not change the major version, as we are not making breaking changes to our API and we expect users of the gem to be keeping up to date with supported versions of Ruby and Rails.
@@ -58,6 +58,10 @@ module Anony
58
58
  # Finds the records that relate to a particular subject and runs anonymise on
59
59
  # each of them. If a selector is not defined it will raise an exception.
60
60
  def anonymise_for!(subject, subject_id)
61
+ unless anonymise_config
62
+ raise ArgumentError, "#{name} does not have an Anony configuration"
63
+ end
64
+
61
65
  records = anonymise_config.
62
66
  select(subject, subject_id)
63
67
  records.map do |record|
@@ -76,6 +80,8 @@ module Anony
76
80
  # @example
77
81
  # Manager.selector_for?(:user_id)
78
82
  def selector_for?(subject)
83
+ return false if anonymise_config.nil?
84
+
79
85
  anonymise_config.selector_for?(subject)
80
86
  end
81
87
 
@@ -96,7 +102,7 @@ module Anony
96
102
  self.class.anonymise_config.validate!
97
103
  self.class.anonymise_config.apply(self)
98
104
  rescue ActiveRecord::RecordNotSaved, ActiveRecord::RecordNotDestroyed => e
99
- Result.failed(e)
105
+ Result.failed(e, self)
100
106
  end
101
107
 
102
108
  def anonymised?
@@ -41,7 +41,7 @@ module Anony
41
41
  # @example
42
42
  # Anony::ModelConfig.new(Manager).apply(Manager.new)
43
43
  def apply(instance)
44
- return Result.skipped if @skip_filter && instance.instance_exec(&@skip_filter)
44
+ return Result.skipped(instance) if @skip_filter && instance.instance_exec(&@skip_filter)
45
45
 
46
46
  @strategy.apply(instance)
47
47
  end
data/lib/anony/result.rb CHANGED
@@ -9,32 +9,33 @@ module Anony
9
9
  OVERWRITTEN = "overwritten"
10
10
  SKIPPED = "skipped"
11
11
 
12
- attr_reader :status, :fields, :error
12
+ attr_reader :status, :fields, :error, :record
13
13
 
14
14
  delegate :failed?, :overwritten?, :skipped?, :destroyed?, to: :status
15
15
 
16
- def self.failed(error)
17
- new(FAILED, error: error)
16
+ def self.failed(error, record)
17
+ new(FAILED, record: record, error: error)
18
18
  end
19
19
 
20
- def self.overwritten(fields)
21
- new(OVERWRITTEN, fields: fields)
20
+ def self.overwritten(fields, record)
21
+ new(OVERWRITTEN, record: record, fields: fields)
22
22
  end
23
23
 
24
- def self.skipped
25
- new(SKIPPED)
24
+ def self.skipped(record)
25
+ new(SKIPPED, record: record)
26
26
  end
27
27
 
28
- def self.destroyed
29
- new(DESTROYED)
28
+ def self.destroyed(record)
29
+ new(DESTROYED, record: record)
30
30
  end
31
31
 
32
- private def initialize(status, fields: [], error: nil)
32
+ private def initialize(status, record:, fields: [], error: nil)
33
33
  raise ArgumentError, "No error provided" if status == FAILED && error.nil?
34
34
 
35
35
  @status = ActiveSupport::StringInquirer.new(status)
36
36
  @fields = fields
37
37
  @error = error
38
+ @record = record
38
39
  end
39
40
  end
40
41
  end
@@ -32,7 +32,7 @@ module Anony
32
32
  # @param [ActiveRecord::Base] instance An instance of the model
33
33
  def apply(instance)
34
34
  instance.destroy!
35
- Result.destroyed
35
+ Result.destroyed(instance)
36
36
  end
37
37
  end
38
38
  end
@@ -58,7 +58,7 @@ module Anony
58
58
 
59
59
  instance.save!
60
60
 
61
- Result.overwritten(result_fields)
61
+ Result.overwritten(result_fields, instance)
62
62
  end
63
63
 
64
64
  # Configure a custom strategy for one or more fields. If a block is given that is used
data/lib/anony/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Anony
4
- VERSION = "1.4.0"
4
+ VERSION = "1.5.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anony
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GoCardless Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-31 00:00:00.000000000 Z
11
+ date: 2024-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: database_cleaner-active_record
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.2'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.2'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: gc_ruboconfig
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,21 +100,21 @@ dependencies:
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 1.6.1
103
+ version: 2.1.0
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 1.6.1
110
+ version: 2.1.0
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: activerecord
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
102
116
  - !ruby/object:Gem::Version
103
- version: '6.1'
117
+ version: '7.0'
104
118
  - - "<"
105
119
  - !ruby/object:Gem::Version
106
120
  version: '8'
@@ -110,7 +124,7 @@ dependencies:
110
124
  requirements:
111
125
  - - ">="
112
126
  - !ruby/object:Gem::Version
113
- version: '6.1'
127
+ version: '7.0'
114
128
  - - "<"
115
129
  - !ruby/object:Gem::Version
116
130
  version: '8'
@@ -120,7 +134,7 @@ dependencies:
120
134
  requirements:
121
135
  - - ">="
122
136
  - !ruby/object:Gem::Version
123
- version: '6.1'
137
+ version: '7.0'
124
138
  - - "<"
125
139
  - !ruby/object:Gem::Version
126
140
  version: '8'
@@ -130,7 +144,7 @@ dependencies:
130
144
  requirements:
131
145
  - - ">="
132
146
  - !ruby/object:Gem::Version
133
- version: '6.1'
147
+ version: '7.0'
134
148
  - - "<"
135
149
  - !ruby/object:Gem::Version
136
150
  version: '8'
@@ -184,14 +198,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
198
  requirements:
185
199
  - - ">="
186
200
  - !ruby/object:Gem::Version
187
- version: '3.0'
201
+ version: '3.1'
188
202
  required_rubygems_version: !ruby/object:Gem::Requirement
189
203
  requirements:
190
204
  - - ">="
191
205
  - !ruby/object:Gem::Version
192
206
  version: '0'
193
207
  requirements: []
194
- rubygems_version: 3.2.22
208
+ rubygems_version: 3.5.20
195
209
  signing_key:
196
210
  specification_version: 4
197
211
  summary: A small library that defines how ActiveRecord models should be anonymised