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 +4 -4
- data/.github/workflows/test.yml +2 -2
- data/.ruby-version +1 -1
- data/CHANGELOG.md +55 -40
- data/Gemfile +0 -3
- data/README.md +19 -17
- data/anony.gemspec +11 -8
- data/docs/COMPATIBILITY.md +4 -4
- data/lib/anony/anonymisable.rb +7 -1
- data/lib/anony/model_config.rb +1 -1
- data/lib/anony/result.rb +11 -10
- data/lib/anony/strategies/destroy.rb +1 -1
- data/lib/anony/strategies/overwrite.rb +1 -1
- data/lib/anony/version.rb +1 -1
- metadata +24 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5b03c5de571df806eaa5a0d76b64a46cc40a0d75d05e253d9da96232b9514a5
|
4
|
+
data.tar.gz: '09865f7078ce1503d9334ef23a6e27139a64f7892882141183c0d5691293e293'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bdca0bc5c85cd515253df30ef628db7be96b9969e8a5ddab66d6c5e032132b2e3143f2d96dd772afa83ea709ce5807caa876f93de37abbe1b18e5e4b0511c0c
|
7
|
+
data.tar.gz: 302538470c1416595982f562dd33545d7e41df85b62c9965a81b155d838e6c77c4ed852b606eeb6d351733c8ffae00f179f5739e16fb5f877c805a83635dd238
|
data/.github/workflows/test.yml
CHANGED
@@ -19,8 +19,8 @@ jobs:
|
|
19
19
|
tests:
|
20
20
|
strategy:
|
21
21
|
matrix:
|
22
|
-
ruby-version: [3.
|
23
|
-
rails-version: [
|
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.
|
1
|
+
3.3.4
|
data/CHANGELOG.md
CHANGED
@@ -1,91 +1,106 @@
|
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
35
|
+
## v1.0.2
|
21
36
|
|
22
37
|
- Unpin ActiveSupport for Rails 6
|
23
38
|
|
24
|
-
|
39
|
+
## v1.0.1
|
25
40
|
|
26
|
-
|
41
|
+
- Throw a more useful exception when calling .anonymise without config [#53](https://github.com/gocardless/anony/pull/53)
|
27
42
|
|
28
|
-
|
43
|
+
## v1.0.0
|
29
44
|
|
30
|
-
|
45
|
+
- Create a result object when calling `anonymise!` [#44](https://github.com/gocardless/anony/pull/44)
|
31
46
|
|
32
|
-
|
47
|
+
## v0.8.0
|
33
48
|
|
34
|
-
|
35
|
-
|
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
|
-
|
52
|
+
## v0.7.3
|
38
53
|
|
39
|
-
|
54
|
+
- Allow customising the model superclass for the `DefineDeletionStrategy` cop [#36](https://github.com/gocardless/anony/pull/36)
|
40
55
|
|
41
|
-
|
56
|
+
## v0.7.2
|
42
57
|
|
43
|
-
|
58
|
+
- Add ability to prevent anonymisation with `skip_if` [#25](https://github.com/gocardless/anony/pull/25)
|
44
59
|
|
45
|
-
|
60
|
+
## v0.7.1
|
46
61
|
|
47
|
-
|
62
|
+
- Fix breakage when applying a strategy multiple times [#35](https://github.com/gocardless/anony/pull/35)
|
48
63
|
|
49
|
-
|
64
|
+
## v0.7.0
|
50
65
|
|
51
|
-
|
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
|
-
|
70
|
+
- **BREAKING*- `Anony::Strategies.register` was renamed to `Anony::FieldLevelStrategies.register`.
|
56
71
|
|
57
|
-
|
72
|
+
## v0.6.0
|
58
73
|
|
59
|
-
|
74
|
+
- Use ActiveRecord::Persistence#current_time_from_proper_timezone [#34](https://github.com/gocardless/anony/pull/34)
|
60
75
|
|
61
|
-
|
76
|
+
## v0.5.0
|
62
77
|
|
63
|
-
|
64
|
-
|
65
|
-
|
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
|
-
|
82
|
+
## v0.4.0
|
68
83
|
|
69
|
-
|
84
|
+
- Allow using a constant value as a strategy [#19](https://github.com/gocardless/anony/pull/19)
|
70
85
|
|
71
|
-
|
86
|
+
## v0.3.1
|
72
87
|
|
73
|
-
|
88
|
+
- Fix `anonymised_at` column [#13](https://github.com/gocardless/anony/pull/13)
|
74
89
|
|
75
|
-
|
90
|
+
## v0.3.0
|
76
91
|
|
77
|
-
|
92
|
+
- Support `anonymised_at` column [#9](https://github.com/gocardless/anony/pull/9)
|
78
93
|
|
79
|
-
|
94
|
+
## v0.2.1
|
80
95
|
|
81
|
-
|
96
|
+
- Fix relative require in DefineDeletionStrategy cop [#8](https://github.com/gocardless/anony/pull/8)
|
82
97
|
|
83
|
-
|
98
|
+
## v0.2
|
84
99
|
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
-
|
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
|
-
|
124
|
-
|
125
|
-
|
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
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
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.
|
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.
|
38
|
-
|
39
|
-
|
40
|
-
|
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
|
data/docs/COMPATIBILITY.md
CHANGED
@@ -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](../.
|
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
|
-
|
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
|
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
|
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.
|
data/lib/anony/anonymisable.rb
CHANGED
@@ -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?
|
data/lib/anony/model_config.rb
CHANGED
@@ -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
|
data/lib/anony/version.rb
CHANGED
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
|
+
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-
|
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.
|
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.
|
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: '
|
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: '
|
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: '
|
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: '
|
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.
|
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.
|
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
|