deprecation_collector 0.0.6 → 0.2.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: edc00d8d4dd22e076dd0c331bd65ee2a6caad48e28ee0f2a79253f94d6d5a1b3
4
- data.tar.gz: a8d0a71ada4d0eae355f853f685ea4548124e5090bcac361bb4363ef69b8faaa
3
+ metadata.gz: 21042fb4a7a9045647774128efd65fd4a27b182b6122738a0407da13af1b8786
4
+ data.tar.gz: eef445a5a47d88e3b7dc55f90ee07f9cfda0539b2a059ce7bc5286773a5d17e3
5
5
  SHA512:
6
- metadata.gz: b7f467b251d4e04f9d23f5524f1c0e36d6ab363090664178ef82d78d261e118d7f30511f6711ebde8205cde3fe46e871f870752c8be867f4f0bd743344589e5b
7
- data.tar.gz: 2c3b8f59fc2adb43a04a39f3fb39f02bcd752ebbc9d7a1974a77a8441dfeb1daaf65ec87704d7159a1b31a443c20df5a202ff1872e08a28e709baccd84657998
6
+ metadata.gz: a0309b7c02fcfe4f458feed01b3f3dd37d8510269c8b5b1296cbc545be250d73bb232bdd6a0d8a41595cadf2e268baefa60b0c0158eb87bb8bb186072560056c
7
+ data.tar.gz: 736342d4de1fef5b3326f1866f01b22e4642792a013853b849ed1ba42a32e68bc93c843f332d83b824e6f7a840b3364dc83acbfaf2f1c34c4e634bbfc21c94ff
data/.rubocop.yml CHANGED
@@ -1,7 +1,15 @@
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-rake
4
+ - rubocop-performance
5
+
1
6
  AllCops:
2
- # spec/ have TargetRubyVersion: 2.6
3
- TargetRubyVersion: 2.4
7
+ # note additional conf in spec/
8
+ TargetRubyVersion: 2.5
4
9
  NewCops: enable
10
+ SuggestExtensions: false
11
+ Exclude:
12
+ - gemfiles/*
5
13
 
6
14
  Style/StringLiterals:
7
15
  Enabled: true
@@ -14,7 +22,11 @@ Style/StringLiteralsInInterpolation:
14
22
  Layout/LineLength:
15
23
  Max: 120
16
24
 
17
- Metrics/ClassLength: { Max: 200 }
25
+ Metrics/ClassLength: { Max: 230 }
18
26
  Metrics/MethodLength: { Max: 15 }
27
+ Metrics/AbcSize: { Max: 23 }
19
28
  Metrics/CyclomaticComplexity: { Max: 9 }
20
29
  Metrics/PerceivedComplexity: { Max: 9 }
30
+
31
+ RSpec/ExampleLength: { Enabled: false }
32
+ RSpec/MultipleExpectations: { Enabled: false }
data/Appraisals ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ appraise "rails_none" do
4
+ # none here
5
+ end
6
+
7
+ appraise "rails_6" do
8
+ gem "rails", "~>6.0"
9
+ end
10
+
11
+ appraise "rails_7" do
12
+ gem "rails", "~>7.0"
13
+ end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ == 0.2.0
2
+ - ability to add custom deprecation fingerprint (for example - controller+action), use `config.fingerprinter`
3
+
4
+ == 0.1.0
5
+ - kinda-breaking: ruby 2.4 was in fact not supported, so changed requirement to 2.5
6
+ - prevent recursion when deprecation fires in `context_saver` hook
7
+ - prevent recursion in most cases if a deprecation fires in collector itself
8
+
9
+ - changed all `caller` use to `caller_locations` to match rails (and take advantage of it), `#collect` now expects backtrace with an array of `Thread::Backtrace::Location`
10
+ - added GitHub Actions CI
11
+ - added ability to run without rails
12
+
1
13
  == 0.0.6
2
14
  - added custom context saving ability
3
15
 
data/Gemfile CHANGED
@@ -10,13 +10,18 @@ gem "rake", "~> 13.0"
10
10
  gem "rspec", "~> 3.0"
11
11
  gem "timecop"
12
12
 
13
- gem "rubocop", "~> 1.21"
14
- gem "rubocop-performance"
15
- gem "rubocop-rails"
16
- gem "rubocop-rake"
17
- gem "rubocop-rspec"
13
+ unless defined?(Appraisal)
14
+ group :lint do
15
+ gem "rubocop", "~> 1.21"
16
+ gem "rubocop-performance"
17
+ gem "rubocop-rails"
18
+ gem "rubocop-rake"
19
+ gem "rubocop-rspec"
20
+ end
18
21
 
19
- # TODO: appraisals
20
- gem "rails", "6.0"
22
+ gem "rails", "~>6.0.0"
23
+ gem 'simplecov'
24
+ end
21
25
 
22
- gem 'redis', '~>4.8'
26
+ gem "fakeredis"
27
+ gem "redis", "~>4.8"
data/Gemfile.lock CHANGED
@@ -1,172 +1,200 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- deprecation_collector (0.0.6)
4
+ deprecation_collector (0.2.0)
5
5
  redis (>= 3.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actioncable (6.0.0)
11
- actionpack (= 6.0.0)
10
+ actioncable (6.0.6)
11
+ actionpack (= 6.0.6)
12
12
  nio4r (~> 2.0)
13
13
  websocket-driver (>= 0.6.1)
14
- actionmailbox (6.0.0)
15
- actionpack (= 6.0.0)
16
- activejob (= 6.0.0)
17
- activerecord (= 6.0.0)
18
- activestorage (= 6.0.0)
19
- activesupport (= 6.0.0)
14
+ actionmailbox (6.0.6)
15
+ actionpack (= 6.0.6)
16
+ activejob (= 6.0.6)
17
+ activerecord (= 6.0.6)
18
+ activestorage (= 6.0.6)
19
+ activesupport (= 6.0.6)
20
20
  mail (>= 2.7.1)
21
- actionmailer (6.0.0)
22
- actionpack (= 6.0.0)
23
- actionview (= 6.0.0)
24
- activejob (= 6.0.0)
21
+ actionmailer (6.0.6)
22
+ actionpack (= 6.0.6)
23
+ actionview (= 6.0.6)
24
+ activejob (= 6.0.6)
25
25
  mail (~> 2.5, >= 2.5.4)
26
26
  rails-dom-testing (~> 2.0)
27
- actionpack (6.0.0)
28
- actionview (= 6.0.0)
29
- activesupport (= 6.0.0)
30
- rack (~> 2.0)
27
+ actionpack (6.0.6)
28
+ actionview (= 6.0.6)
29
+ activesupport (= 6.0.6)
30
+ rack (~> 2.0, >= 2.0.8)
31
31
  rack-test (>= 0.6.3)
32
32
  rails-dom-testing (~> 2.0)
33
33
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
34
- actiontext (6.0.0)
35
- actionpack (= 6.0.0)
36
- activerecord (= 6.0.0)
37
- activestorage (= 6.0.0)
38
- activesupport (= 6.0.0)
34
+ actiontext (6.0.6)
35
+ actionpack (= 6.0.6)
36
+ activerecord (= 6.0.6)
37
+ activestorage (= 6.0.6)
38
+ activesupport (= 6.0.6)
39
39
  nokogiri (>= 1.8.5)
40
- actionview (6.0.0)
41
- activesupport (= 6.0.0)
40
+ actionview (6.0.6)
41
+ activesupport (= 6.0.6)
42
42
  builder (~> 3.1)
43
43
  erubi (~> 1.4)
44
44
  rails-dom-testing (~> 2.0)
45
45
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
46
- activejob (6.0.0)
47
- activesupport (= 6.0.0)
46
+ activejob (6.0.6)
47
+ activesupport (= 6.0.6)
48
48
  globalid (>= 0.3.6)
49
- activemodel (6.0.0)
50
- activesupport (= 6.0.0)
51
- activerecord (6.0.0)
52
- activemodel (= 6.0.0)
53
- activesupport (= 6.0.0)
54
- activestorage (6.0.0)
55
- actionpack (= 6.0.0)
56
- activejob (= 6.0.0)
57
- activerecord (= 6.0.0)
58
- marcel (~> 0.3.1)
59
- activesupport (6.0.0)
49
+ activemodel (6.0.6)
50
+ activesupport (= 6.0.6)
51
+ activerecord (6.0.6)
52
+ activemodel (= 6.0.6)
53
+ activesupport (= 6.0.6)
54
+ activestorage (6.0.6)
55
+ actionpack (= 6.0.6)
56
+ activejob (= 6.0.6)
57
+ activerecord (= 6.0.6)
58
+ marcel (~> 1.0)
59
+ activesupport (6.0.6)
60
60
  concurrent-ruby (~> 1.0, >= 1.0.2)
61
61
  i18n (>= 0.7, < 2)
62
62
  minitest (~> 5.1)
63
63
  tzinfo (~> 1.1)
64
- zeitwerk (~> 2.1, >= 2.1.8)
64
+ zeitwerk (~> 2.2, >= 2.2.2)
65
+ appraisal (2.4.1)
66
+ bundler
67
+ rake
68
+ thor (>= 0.14.0)
65
69
  ast (2.4.2)
66
70
  builder (3.2.4)
67
71
  concurrent-ruby (1.1.10)
68
72
  crass (1.0.6)
73
+ date (3.3.1)
69
74
  diff-lcs (1.5.0)
70
- erubi (1.10.0)
75
+ docile (1.4.0)
76
+ erubi (1.11.0)
77
+ fakeredis (0.8.0)
78
+ redis (~> 4.1)
71
79
  globalid (1.0.0)
72
80
  activesupport (>= 5.0)
73
- i18n (1.10.0)
81
+ i18n (1.12.0)
74
82
  concurrent-ruby (~> 1.0)
75
- loofah (2.18.0)
83
+ json (2.6.3)
84
+ loofah (2.19.1)
76
85
  crass (~> 1.0.2)
77
86
  nokogiri (>= 1.5.9)
78
- mail (2.7.1)
87
+ mail (2.8.0)
79
88
  mini_mime (>= 0.1.1)
80
- marcel (0.3.3)
81
- mimemagic (~> 0.3.2)
89
+ net-imap
90
+ net-pop
91
+ net-smtp
92
+ marcel (1.0.2)
82
93
  method_source (1.0.0)
83
- mimemagic (0.3.10)
84
- nokogiri (~> 1)
85
- rake
86
94
  mini_mime (1.1.2)
87
- mini_portile2 (2.8.0)
88
- minitest (5.15.0)
95
+ mini_portile2 (2.8.1)
96
+ minitest (5.16.3)
97
+ net-imap (0.3.2)
98
+ date
99
+ net-protocol
100
+ net-pop (0.1.2)
101
+ net-protocol
102
+ net-protocol (0.2.1)
103
+ timeout
104
+ net-smtp (0.3.3)
105
+ net-protocol
89
106
  nio4r (2.5.8)
90
- nokogiri (1.13.6)
107
+ nokogiri (1.14.0)
91
108
  mini_portile2 (~> 2.8.0)
92
109
  racc (~> 1.4)
93
- nokogiri (1.13.6-x86_64-darwin)
110
+ nokogiri (1.14.0-arm64-darwin)
111
+ racc (~> 1.4)
112
+ nokogiri (1.14.0-x86_64-darwin)
113
+ racc (~> 1.4)
114
+ nokogiri (1.14.0-x86_64-linux)
94
115
  racc (~> 1.4)
95
116
  parallel (1.22.1)
96
- parser (3.1.2.0)
117
+ parser (3.1.3.0)
97
118
  ast (~> 2.4.1)
98
- racc (1.6.0)
99
- rack (2.2.3.1)
100
- rack-test (1.1.0)
101
- rack (>= 1.0, < 3)
102
- rails (6.0.0)
103
- actioncable (= 6.0.0)
104
- actionmailbox (= 6.0.0)
105
- actionmailer (= 6.0.0)
106
- actionpack (= 6.0.0)
107
- actiontext (= 6.0.0)
108
- actionview (= 6.0.0)
109
- activejob (= 6.0.0)
110
- activemodel (= 6.0.0)
111
- activerecord (= 6.0.0)
112
- activestorage (= 6.0.0)
113
- activesupport (= 6.0.0)
119
+ racc (1.6.2)
120
+ rack (2.2.4)
121
+ rack-test (2.0.2)
122
+ rack (>= 1.3)
123
+ rails (6.0.6)
124
+ actioncable (= 6.0.6)
125
+ actionmailbox (= 6.0.6)
126
+ actionmailer (= 6.0.6)
127
+ actionpack (= 6.0.6)
128
+ actiontext (= 6.0.6)
129
+ actionview (= 6.0.6)
130
+ activejob (= 6.0.6)
131
+ activemodel (= 6.0.6)
132
+ activerecord (= 6.0.6)
133
+ activestorage (= 6.0.6)
134
+ activesupport (= 6.0.6)
114
135
  bundler (>= 1.3.0)
115
- railties (= 6.0.0)
136
+ railties (= 6.0.6)
116
137
  sprockets-rails (>= 2.0.0)
117
138
  rails-dom-testing (2.0.3)
118
139
  activesupport (>= 4.2.0)
119
140
  nokogiri (>= 1.6)
120
- rails-html-sanitizer (1.4.2)
121
- loofah (~> 2.3)
122
- railties (6.0.0)
123
- actionpack (= 6.0.0)
124
- activesupport (= 6.0.0)
141
+ rails-html-sanitizer (1.4.4)
142
+ loofah (~> 2.19, >= 2.19.1)
143
+ railties (6.0.6)
144
+ actionpack (= 6.0.6)
145
+ activesupport (= 6.0.6)
125
146
  method_source
126
147
  rake (>= 0.8.7)
127
148
  thor (>= 0.20.3, < 2.0)
128
149
  rainbow (3.1.1)
129
150
  rake (13.0.6)
130
151
  redis (4.8.0)
131
- regexp_parser (2.5.0)
152
+ regexp_parser (2.6.1)
132
153
  rexml (3.2.5)
133
- rspec (3.11.0)
134
- rspec-core (~> 3.11.0)
135
- rspec-expectations (~> 3.11.0)
136
- rspec-mocks (~> 3.11.0)
137
- rspec-core (3.11.0)
138
- rspec-support (~> 3.11.0)
139
- rspec-expectations (3.11.0)
154
+ rspec (3.12.0)
155
+ rspec-core (~> 3.12.0)
156
+ rspec-expectations (~> 3.12.0)
157
+ rspec-mocks (~> 3.12.0)
158
+ rspec-core (3.12.0)
159
+ rspec-support (~> 3.12.0)
160
+ rspec-expectations (3.12.0)
140
161
  diff-lcs (>= 1.2.0, < 2.0)
141
- rspec-support (~> 3.11.0)
142
- rspec-mocks (3.11.1)
162
+ rspec-support (~> 3.12.0)
163
+ rspec-mocks (3.12.1)
143
164
  diff-lcs (>= 1.2.0, < 2.0)
144
- rspec-support (~> 3.11.0)
145
- rspec-support (3.11.0)
146
- rubocop (1.30.0)
165
+ rspec-support (~> 3.12.0)
166
+ rspec-support (3.12.0)
167
+ rubocop (1.40.0)
168
+ json (~> 2.3)
147
169
  parallel (~> 1.10)
148
- parser (>= 3.1.0.0)
170
+ parser (>= 3.1.2.1)
149
171
  rainbow (>= 2.2.2, < 4.0)
150
172
  regexp_parser (>= 1.8, < 3.0)
151
173
  rexml (>= 3.2.5, < 4.0)
152
- rubocop-ast (>= 1.18.0, < 2.0)
174
+ rubocop-ast (>= 1.23.0, < 2.0)
153
175
  ruby-progressbar (~> 1.7)
154
176
  unicode-display_width (>= 1.4.0, < 3.0)
155
- rubocop-ast (1.18.0)
177
+ rubocop-ast (1.24.0)
156
178
  parser (>= 3.1.1.0)
157
- rubocop-performance (1.14.3)
179
+ rubocop-performance (1.15.1)
158
180
  rubocop (>= 1.7.0, < 2.0)
159
181
  rubocop-ast (>= 0.4.0)
160
- rubocop-rails (2.15.2)
182
+ rubocop-rails (2.17.3)
161
183
  activesupport (>= 4.2.0)
162
184
  rack (>= 1.1)
163
- rubocop (>= 1.7.0, < 2.0)
185
+ rubocop (>= 1.33.0, < 2.0)
164
186
  rubocop-rake (0.6.0)
165
187
  rubocop (~> 1.0)
166
- rubocop-rspec (2.11.1)
167
- rubocop (~> 1.19)
188
+ rubocop-rspec (2.16.0)
189
+ rubocop (~> 1.33)
168
190
  ruby-progressbar (1.11.0)
169
- sprockets (4.0.3)
191
+ simplecov (0.22.0)
192
+ docile (~> 1.1)
193
+ simplecov-html (~> 0.11)
194
+ simplecov_json_formatter (~> 0.1)
195
+ simplecov-html (0.12.3)
196
+ simplecov_json_formatter (0.1.4)
197
+ sprockets (4.1.1)
170
198
  concurrent-ruby (~> 1.0)
171
199
  rack (> 1, < 3)
172
200
  sprockets-rails (3.4.2)
@@ -175,22 +203,27 @@ GEM
175
203
  sprockets (>= 3.0.0)
176
204
  thor (1.2.1)
177
205
  thread_safe (0.3.6)
178
- timecop (0.9.5)
179
- tzinfo (1.2.9)
206
+ timecop (0.9.6)
207
+ timeout (0.3.1)
208
+ tzinfo (1.2.10)
180
209
  thread_safe (~> 0.1)
181
- unicode-display_width (2.1.0)
210
+ unicode-display_width (2.3.0)
182
211
  websocket-driver (0.7.5)
183
212
  websocket-extensions (>= 0.1.0)
184
213
  websocket-extensions (0.1.5)
185
- zeitwerk (2.5.4)
214
+ zeitwerk (2.6.6)
186
215
 
187
216
  PLATFORMS
217
+ arm64-darwin
188
218
  ruby
189
- x86_64-darwin-21
219
+ x86_64-darwin
220
+ x86_64-linux
190
221
 
191
222
  DEPENDENCIES
223
+ appraisal
192
224
  deprecation_collector!
193
- rails (= 6.0)
225
+ fakeredis
226
+ rails (~> 6.0.0)
194
227
  rake (~> 13.0)
195
228
  redis (~> 4.8)
196
229
  rspec (~> 3.0)
@@ -199,6 +232,7 @@ DEPENDENCIES
199
232
  rubocop-rails
200
233
  rubocop-rake
201
234
  rubocop-rspec
235
+ simplecov
202
236
  timecop
203
237
 
204
238
  BUNDLED WITH
data/README.md CHANGED
@@ -37,6 +37,10 @@ Add an initializer with configuration, like
37
37
  # this will only be called for new deprecations, return value must be json-compatible
38
38
  { some: "custom", context: "for example request.id" }
39
39
  end
40
+ instance.fingerprinter do |deprecation|
41
+ # this will be added to fingerprint; this will be ignored for recursive deprecations
42
+ "return_string_here"
43
+ end
40
44
  end
41
45
  end
42
46
  ```
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "Collects and aggregates warnings and deprecations. Optimized for production environment."
13
13
  spec.homepage = "https://github.com/Vasfed/deprecation_collector"
14
14
  spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.4.0"
15
+ spec.required_ruby_version = ">= 2.5.0"
16
16
 
17
17
  spec.metadata["homepage_uri"] = spec.homepage
18
18
  spec.metadata["source_code_uri"] = "https://github.com/Vasfed/deprecation_collector"
@@ -28,4 +28,5 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ["lib"]
29
29
 
30
30
  spec.add_dependency "redis", ">= 3.0"
31
+ spec.add_development_dependency "appraisal"
31
32
  end
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.0"
7
+ gem "timecop"
8
+ gem "fakeredis"
9
+ gem "redis", "~>4.8"
10
+ gem "rails", "~>6.0"
11
+
12
+ gemspec path: "../"
@@ -0,0 +1,194 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ deprecation_collector (0.2.0)
5
+ redis (>= 3.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actioncable (6.1.7.1)
11
+ actionpack (= 6.1.7.1)
12
+ activesupport (= 6.1.7.1)
13
+ nio4r (~> 2.0)
14
+ websocket-driver (>= 0.6.1)
15
+ actionmailbox (6.1.7.1)
16
+ actionpack (= 6.1.7.1)
17
+ activejob (= 6.1.7.1)
18
+ activerecord (= 6.1.7.1)
19
+ activestorage (= 6.1.7.1)
20
+ activesupport (= 6.1.7.1)
21
+ mail (>= 2.7.1)
22
+ actionmailer (6.1.7.1)
23
+ actionpack (= 6.1.7.1)
24
+ actionview (= 6.1.7.1)
25
+ activejob (= 6.1.7.1)
26
+ activesupport (= 6.1.7.1)
27
+ mail (~> 2.5, >= 2.5.4)
28
+ rails-dom-testing (~> 2.0)
29
+ actionpack (6.1.7.1)
30
+ actionview (= 6.1.7.1)
31
+ activesupport (= 6.1.7.1)
32
+ rack (~> 2.0, >= 2.0.9)
33
+ rack-test (>= 0.6.3)
34
+ rails-dom-testing (~> 2.0)
35
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
36
+ actiontext (6.1.7.1)
37
+ actionpack (= 6.1.7.1)
38
+ activerecord (= 6.1.7.1)
39
+ activestorage (= 6.1.7.1)
40
+ activesupport (= 6.1.7.1)
41
+ nokogiri (>= 1.8.5)
42
+ actionview (6.1.7.1)
43
+ activesupport (= 6.1.7.1)
44
+ builder (~> 3.1)
45
+ erubi (~> 1.4)
46
+ rails-dom-testing (~> 2.0)
47
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
48
+ activejob (6.1.7.1)
49
+ activesupport (= 6.1.7.1)
50
+ globalid (>= 0.3.6)
51
+ activemodel (6.1.7.1)
52
+ activesupport (= 6.1.7.1)
53
+ activerecord (6.1.7.1)
54
+ activemodel (= 6.1.7.1)
55
+ activesupport (= 6.1.7.1)
56
+ activestorage (6.1.7.1)
57
+ actionpack (= 6.1.7.1)
58
+ activejob (= 6.1.7.1)
59
+ activerecord (= 6.1.7.1)
60
+ activesupport (= 6.1.7.1)
61
+ marcel (~> 1.0)
62
+ mini_mime (>= 1.1.0)
63
+ activesupport (6.1.7.1)
64
+ concurrent-ruby (~> 1.0, >= 1.0.2)
65
+ i18n (>= 1.6, < 2)
66
+ minitest (>= 5.1)
67
+ tzinfo (~> 2.0)
68
+ zeitwerk (~> 2.3)
69
+ appraisal (2.4.1)
70
+ bundler
71
+ rake
72
+ thor (>= 0.14.0)
73
+ builder (3.2.4)
74
+ concurrent-ruby (1.1.10)
75
+ crass (1.0.6)
76
+ diff-lcs (1.5.0)
77
+ digest (3.1.1)
78
+ erubi (1.12.0)
79
+ fakeredis (0.8.0)
80
+ redis (~> 4.1)
81
+ globalid (1.0.0)
82
+ activesupport (>= 5.0)
83
+ i18n (1.12.0)
84
+ concurrent-ruby (~> 1.0)
85
+ io-wait (0.3.0)
86
+ loofah (2.19.1)
87
+ crass (~> 1.0.2)
88
+ nokogiri (>= 1.5.9)
89
+ mail (2.8.0.1)
90
+ mini_mime (>= 0.1.1)
91
+ net-imap
92
+ net-pop
93
+ net-smtp
94
+ marcel (1.0.2)
95
+ method_source (1.0.0)
96
+ mini_mime (1.1.2)
97
+ minitest (5.15.0)
98
+ net-imap (0.2.2)
99
+ digest
100
+ net-protocol
101
+ strscan
102
+ net-pop (0.1.2)
103
+ net-protocol
104
+ net-protocol (0.1.2)
105
+ io-wait
106
+ timeout
107
+ net-smtp (0.3.0)
108
+ digest
109
+ net-protocol
110
+ timeout
111
+ nio4r (2.5.8)
112
+ nokogiri (1.12.5-x86_64-darwin)
113
+ racc (~> 1.4)
114
+ nokogiri (1.12.5-x86_64-linux)
115
+ racc (~> 1.4)
116
+ racc (1.6.2)
117
+ rack (2.2.6.1)
118
+ rack-test (2.0.2)
119
+ rack (>= 1.3)
120
+ rails (6.1.7.1)
121
+ actioncable (= 6.1.7.1)
122
+ actionmailbox (= 6.1.7.1)
123
+ actionmailer (= 6.1.7.1)
124
+ actionpack (= 6.1.7.1)
125
+ actiontext (= 6.1.7.1)
126
+ actionview (= 6.1.7.1)
127
+ activejob (= 6.1.7.1)
128
+ activemodel (= 6.1.7.1)
129
+ activerecord (= 6.1.7.1)
130
+ activestorage (= 6.1.7.1)
131
+ activesupport (= 6.1.7.1)
132
+ bundler (>= 1.15.0)
133
+ railties (= 6.1.7.1)
134
+ sprockets-rails (>= 2.0.0)
135
+ rails-dom-testing (2.0.3)
136
+ activesupport (>= 4.2.0)
137
+ nokogiri (>= 1.6)
138
+ rails-html-sanitizer (1.4.4)
139
+ loofah (~> 2.19, >= 2.19.1)
140
+ railties (6.1.7.1)
141
+ actionpack (= 6.1.7.1)
142
+ activesupport (= 6.1.7.1)
143
+ method_source
144
+ rake (>= 12.2)
145
+ thor (~> 1.0)
146
+ rake (13.0.6)
147
+ redis (4.8.0)
148
+ rspec (3.12.0)
149
+ rspec-core (~> 3.12.0)
150
+ rspec-expectations (~> 3.12.0)
151
+ rspec-mocks (~> 3.12.0)
152
+ rspec-core (3.12.0)
153
+ rspec-support (~> 3.12.0)
154
+ rspec-expectations (3.12.2)
155
+ diff-lcs (>= 1.2.0, < 2.0)
156
+ rspec-support (~> 3.12.0)
157
+ rspec-mocks (3.12.3)
158
+ diff-lcs (>= 1.2.0, < 2.0)
159
+ rspec-support (~> 3.12.0)
160
+ rspec-support (3.12.0)
161
+ sprockets (4.2.0)
162
+ concurrent-ruby (~> 1.0)
163
+ rack (>= 2.2.4, < 4)
164
+ sprockets-rails (3.4.2)
165
+ actionpack (>= 5.2)
166
+ activesupport (>= 5.2)
167
+ sprockets (>= 3.0.0)
168
+ strscan (3.0.5)
169
+ thor (1.2.1)
170
+ timecop (0.9.6)
171
+ timeout (0.3.1)
172
+ tzinfo (2.0.5)
173
+ concurrent-ruby (~> 1.0)
174
+ websocket-driver (0.7.5)
175
+ websocket-extensions (>= 0.1.0)
176
+ websocket-extensions (0.1.5)
177
+ zeitwerk (2.6.6)
178
+
179
+ PLATFORMS
180
+ x86_64-darwin-21
181
+ x86_64-linux
182
+
183
+ DEPENDENCIES
184
+ appraisal
185
+ deprecation_collector!
186
+ fakeredis
187
+ rails (~> 6.0)
188
+ rake (~> 13.0)
189
+ redis (~> 4.8)
190
+ rspec (~> 3.0)
191
+ timecop
192
+
193
+ BUNDLED WITH
194
+ 2.3.10
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.0"
7
+ gem "timecop"
8
+ gem "fakeredis"
9
+ gem "redis", "~>4.8"
10
+ gem "rails", "~>7.0"
11
+
12
+ gemspec path: "../"
@@ -0,0 +1,187 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ deprecation_collector (0.2.0)
5
+ redis (>= 3.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actioncable (7.0.4.1)
11
+ actionpack (= 7.0.4.1)
12
+ activesupport (= 7.0.4.1)
13
+ nio4r (~> 2.0)
14
+ websocket-driver (>= 0.6.1)
15
+ actionmailbox (7.0.4.1)
16
+ actionpack (= 7.0.4.1)
17
+ activejob (= 7.0.4.1)
18
+ activerecord (= 7.0.4.1)
19
+ activestorage (= 7.0.4.1)
20
+ activesupport (= 7.0.4.1)
21
+ mail (>= 2.7.1)
22
+ net-imap
23
+ net-pop
24
+ net-smtp
25
+ actionmailer (7.0.4.1)
26
+ actionpack (= 7.0.4.1)
27
+ actionview (= 7.0.4.1)
28
+ activejob (= 7.0.4.1)
29
+ activesupport (= 7.0.4.1)
30
+ mail (~> 2.5, >= 2.5.4)
31
+ net-imap
32
+ net-pop
33
+ net-smtp
34
+ rails-dom-testing (~> 2.0)
35
+ actionpack (7.0.4.1)
36
+ actionview (= 7.0.4.1)
37
+ activesupport (= 7.0.4.1)
38
+ rack (~> 2.0, >= 2.2.0)
39
+ rack-test (>= 0.6.3)
40
+ rails-dom-testing (~> 2.0)
41
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
42
+ actiontext (7.0.4.1)
43
+ actionpack (= 7.0.4.1)
44
+ activerecord (= 7.0.4.1)
45
+ activestorage (= 7.0.4.1)
46
+ activesupport (= 7.0.4.1)
47
+ globalid (>= 0.6.0)
48
+ nokogiri (>= 1.8.5)
49
+ actionview (7.0.4.1)
50
+ activesupport (= 7.0.4.1)
51
+ builder (~> 3.1)
52
+ erubi (~> 1.4)
53
+ rails-dom-testing (~> 2.0)
54
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
55
+ activejob (7.0.4.1)
56
+ activesupport (= 7.0.4.1)
57
+ globalid (>= 0.3.6)
58
+ activemodel (7.0.4.1)
59
+ activesupport (= 7.0.4.1)
60
+ activerecord (7.0.4.1)
61
+ activemodel (= 7.0.4.1)
62
+ activesupport (= 7.0.4.1)
63
+ activestorage (7.0.4.1)
64
+ actionpack (= 7.0.4.1)
65
+ activejob (= 7.0.4.1)
66
+ activerecord (= 7.0.4.1)
67
+ activesupport (= 7.0.4.1)
68
+ marcel (~> 1.0)
69
+ mini_mime (>= 1.1.0)
70
+ activesupport (7.0.4.1)
71
+ concurrent-ruby (~> 1.0, >= 1.0.2)
72
+ i18n (>= 1.6, < 2)
73
+ minitest (>= 5.1)
74
+ tzinfo (~> 2.0)
75
+ appraisal (2.4.1)
76
+ bundler
77
+ rake
78
+ thor (>= 0.14.0)
79
+ builder (3.2.4)
80
+ concurrent-ruby (1.1.10)
81
+ crass (1.0.6)
82
+ date (3.3.3)
83
+ diff-lcs (1.5.0)
84
+ erubi (1.12.0)
85
+ fakeredis (0.8.0)
86
+ redis (~> 4.1)
87
+ globalid (1.0.0)
88
+ activesupport (>= 5.0)
89
+ i18n (1.12.0)
90
+ concurrent-ruby (~> 1.0)
91
+ loofah (2.19.1)
92
+ crass (~> 1.0.2)
93
+ nokogiri (>= 1.5.9)
94
+ mail (2.8.0.1)
95
+ mini_mime (>= 0.1.1)
96
+ net-imap
97
+ net-pop
98
+ net-smtp
99
+ marcel (1.0.2)
100
+ method_source (1.0.0)
101
+ mini_mime (1.1.2)
102
+ minitest (5.17.0)
103
+ net-imap (0.3.4)
104
+ date
105
+ net-protocol
106
+ net-pop (0.1.2)
107
+ net-protocol
108
+ net-protocol (0.2.1)
109
+ timeout
110
+ net-smtp (0.3.3)
111
+ net-protocol
112
+ nio4r (2.5.8)
113
+ nokogiri (1.14.0-x86_64-darwin)
114
+ racc (~> 1.4)
115
+ nokogiri (1.14.0-x86_64-linux)
116
+ racc (~> 1.4)
117
+ racc (1.6.2)
118
+ rack (2.2.6.1)
119
+ rack-test (2.0.2)
120
+ rack (>= 1.3)
121
+ rails (7.0.4.1)
122
+ actioncable (= 7.0.4.1)
123
+ actionmailbox (= 7.0.4.1)
124
+ actionmailer (= 7.0.4.1)
125
+ actionpack (= 7.0.4.1)
126
+ actiontext (= 7.0.4.1)
127
+ actionview (= 7.0.4.1)
128
+ activejob (= 7.0.4.1)
129
+ activemodel (= 7.0.4.1)
130
+ activerecord (= 7.0.4.1)
131
+ activestorage (= 7.0.4.1)
132
+ activesupport (= 7.0.4.1)
133
+ bundler (>= 1.15.0)
134
+ railties (= 7.0.4.1)
135
+ rails-dom-testing (2.0.3)
136
+ activesupport (>= 4.2.0)
137
+ nokogiri (>= 1.6)
138
+ rails-html-sanitizer (1.4.4)
139
+ loofah (~> 2.19, >= 2.19.1)
140
+ railties (7.0.4.1)
141
+ actionpack (= 7.0.4.1)
142
+ activesupport (= 7.0.4.1)
143
+ method_source
144
+ rake (>= 12.2)
145
+ thor (~> 1.0)
146
+ zeitwerk (~> 2.5)
147
+ rake (13.0.6)
148
+ redis (4.8.0)
149
+ rspec (3.12.0)
150
+ rspec-core (~> 3.12.0)
151
+ rspec-expectations (~> 3.12.0)
152
+ rspec-mocks (~> 3.12.0)
153
+ rspec-core (3.12.0)
154
+ rspec-support (~> 3.12.0)
155
+ rspec-expectations (3.12.2)
156
+ diff-lcs (>= 1.2.0, < 2.0)
157
+ rspec-support (~> 3.12.0)
158
+ rspec-mocks (3.12.3)
159
+ diff-lcs (>= 1.2.0, < 2.0)
160
+ rspec-support (~> 3.12.0)
161
+ rspec-support (3.12.0)
162
+ thor (1.2.1)
163
+ timecop (0.9.6)
164
+ timeout (0.3.1)
165
+ tzinfo (2.0.5)
166
+ concurrent-ruby (~> 1.0)
167
+ websocket-driver (0.7.5)
168
+ websocket-extensions (>= 0.1.0)
169
+ websocket-extensions (0.1.5)
170
+ zeitwerk (2.6.6)
171
+
172
+ PLATFORMS
173
+ x86_64-darwin-21
174
+ x86_64-linux
175
+
176
+ DEPENDENCIES
177
+ appraisal
178
+ deprecation_collector!
179
+ fakeredis
180
+ rails (~> 7.0)
181
+ rake (~> 13.0)
182
+ redis (~> 4.8)
183
+ rspec (~> 3.0)
184
+ timecop
185
+
186
+ BUNDLED WITH
187
+ 2.3.10
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.0"
7
+ gem "timecop"
8
+ gem "fakeredis"
9
+ gem "redis", "~>4.8"
10
+
11
+ gemspec path: "../"
@@ -0,0 +1,49 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ deprecation_collector (0.2.0)
5
+ redis (>= 3.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ appraisal (2.4.1)
11
+ bundler
12
+ rake
13
+ thor (>= 0.14.0)
14
+ diff-lcs (1.5.0)
15
+ fakeredis (0.8.0)
16
+ redis (~> 4.1)
17
+ rake (13.0.6)
18
+ redis (4.8.0)
19
+ rspec (3.12.0)
20
+ rspec-core (~> 3.12.0)
21
+ rspec-expectations (~> 3.12.0)
22
+ rspec-mocks (~> 3.12.0)
23
+ rspec-core (3.12.0)
24
+ rspec-support (~> 3.12.0)
25
+ rspec-expectations (3.12.2)
26
+ diff-lcs (>= 1.2.0, < 2.0)
27
+ rspec-support (~> 3.12.0)
28
+ rspec-mocks (3.12.3)
29
+ diff-lcs (>= 1.2.0, < 2.0)
30
+ rspec-support (~> 3.12.0)
31
+ rspec-support (3.12.0)
32
+ thor (1.2.1)
33
+ timecop (0.9.6)
34
+
35
+ PLATFORMS
36
+ x86_64-darwin-21
37
+ x86_64-linux
38
+
39
+ DEPENDENCIES
40
+ appraisal
41
+ deprecation_collector!
42
+ fakeredis
43
+ rake (~> 13.0)
44
+ redis (~> 4.8)
45
+ rspec (~> 3.0)
46
+ timecop
47
+
48
+ BUNDLED WITH
49
+ 2.3.10
@@ -39,7 +39,7 @@ class DeprecationCollector
39
39
  remove_method :warn
40
40
  end
41
41
  module_function(define_method(:warn) do |*messages, **kwargs|
42
- KernelWarningCollector.warn(*messages, backtrace: caller, **kwargs)
42
+ KernelWarningCollector.warn(*messages, backtrace: caller_locations, **kwargs)
43
43
  end)
44
44
  end
45
45
  end
@@ -83,7 +83,7 @@ class DeprecationCollector
83
83
  # taps into ruby core Warning#warn
84
84
  module WarningCollector
85
85
  def warn(str)
86
- backtrace = caller
86
+ backtrace = caller_locations
87
87
  MultipartWarningJoiner.handle(str) do |multi_str|
88
88
  DeprecationCollector.collect(multi_str, backtrace, :warning)
89
89
  end
@@ -95,7 +95,7 @@ class DeprecationCollector
95
95
  module_function
96
96
 
97
97
  def warn(*messages, backtrace: nil, **_kwargs)
98
- backtrace ||= caller
98
+ backtrace ||= caller_locations
99
99
  str = messages.map(&:to_s).join("\n").strip
100
100
  DeprecationCollector.collect(str, backtrace, :kernel)
101
101
  # not passing to `super` - it will pass to Warning#warn, we do not want that
@@ -4,7 +4,7 @@ class DeprecationCollector
4
4
  # :nodoc:
5
5
  class Deprecation
6
6
  attr_reader :message, :realm, :gem_traceline, :app_traceline, :occurences, :first_timestamp, :full_backtrace
7
- attr_accessor :context
7
+ attr_accessor :context, :custom_fingerprint
8
8
 
9
9
  CLEANUP_REGEXES = {
10
10
  # rails views generated methods names are unique per-worker
@@ -55,7 +55,8 @@ class DeprecationCollector
55
55
  end
56
56
 
57
57
  def digest_base
58
- "1:#{RUBY_VERSION}:#{defined?(Rails) && Rails.version}:#{message_for_digest}:#{gem_traceline}:#{app_traceline}"
58
+ "1:#{RUBY_VERSION}:#{defined?(Rails) && Rails.version}:#{message_for_digest}:#{gem_traceline}:#{app_traceline}" \
59
+ "#{":#{custom_fingerprint}" if custom_fingerprint}"
59
60
  end
60
61
 
61
62
  def as_json(_options = {})
@@ -76,12 +77,16 @@ class DeprecationCollector
76
77
  }.compact
77
78
  end
78
79
 
80
+ def to_json(_options = {})
81
+ as_json.to_json
82
+ end
83
+
79
84
  protected
80
85
 
81
86
  def find_app_traceline(backtrace)
82
87
  app_root = DeprecationCollector.instance.app_root_prefix
83
88
  backtrace.find do |line|
84
- line = line.to_s
89
+ line = line.path if line.respond_to?(:path) # in production always passes, strings should only come in test
85
90
  (!line.start_with?("/") || line.start_with?(app_root)) && !line.include?("/gems/")
86
91
  end&.to_s&.dup&.delete_prefix(app_root)
87
92
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class DeprecationCollector
4
- VERSION = "0.0.6"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -6,6 +6,7 @@ require_relative "deprecation_collector/collectors"
6
6
  require "time"
7
7
  require "redis"
8
8
  require "json"
9
+ require "set"
9
10
 
10
11
  # singleton class for collector
11
12
  class DeprecationCollector
@@ -56,7 +57,7 @@ class DeprecationCollector
56
57
  :write_interval, :write_interval_jitter,
57
58
  :app_revision, :app_root,
58
59
  :print_to_stderr, :print_recurring
59
- attr_writer :redis, :context_saver
60
+ attr_writer :redis, :context_saver, :fingerprinter
60
61
 
61
62
  def initialize(mutex: nil)
62
63
  # on cruby hash itself is threadsafe, but we need to prevent races
@@ -87,11 +88,17 @@ class DeprecationCollector
87
88
  end
88
89
 
89
90
  def context_saver(&block)
90
- return @context_saver unless block_given?
91
+ return @context_saver unless block
91
92
 
92
93
  @context_saver = block
93
94
  end
94
95
 
96
+ def fingerprinter(&block)
97
+ return @fingerprinter unless block
98
+
99
+ @fingerprinter = block
100
+ end
101
+
95
102
  def app_root_prefix
96
103
  "#{app_root}/"
97
104
  end
@@ -100,17 +107,20 @@ class DeprecationCollector
100
107
  @cleanup_prefixes ||= Gem.path + [app_root_prefix]
101
108
  end
102
109
 
103
- def collect(message, backtrace, realm = :unknown)
110
+ def collect(message, backtrace = caller_locations, realm = :unknown)
104
111
  return if !@enabled || exclude_realms.include?(realm) || @ignore_message_regexp&.match?(message)
105
112
  raise "Deprecation: #{message}" if @raise_on_deprecation
106
113
 
114
+ recursion_iterations_detected = backtrace.count { |l| l.path == __FILE__ && l.base_label == __method__.to_s }
115
+ return if recursion_iterations_detected > 1 # we have a loop, ignore deep nested deprecations
116
+
107
117
  deprecation = Deprecation.new(message, realm, backtrace, cleanup_prefixes)
108
- fresh = store_deprecation(deprecation)
118
+ fresh = store_deprecation(deprecation, allow_context: recursion_iterations_detected.zero?)
109
119
  log_deprecation_if_needed(deprecation, fresh)
110
120
  end
111
121
 
112
122
  def unsent_data?
113
- @deprecations.any?
123
+ unsent_deprecations.any?
114
124
  end
115
125
 
116
126
  def count?
@@ -123,7 +133,7 @@ class DeprecationCollector
123
133
  @redis
124
134
  end
125
135
 
126
- def write_to_redis(force: false) # rubocop:disable Metrics/AbcSize
136
+ def write_to_redis(force: false)
127
137
  return unless force || (@enabled && (current_time > @last_write_time + @write_interval))
128
138
 
129
139
  deprecations_to_flush = nil
@@ -232,11 +242,17 @@ class DeprecationCollector
232
242
 
233
243
  protected
234
244
 
235
- def store_deprecation(deprecation)
245
+ def unsent_deprecations
246
+ @deprecations
247
+ end
248
+
249
+ def store_deprecation(deprecation, allow_context: true)
236
250
  return if deprecation.ignored?
237
- fresh = !@deprecations.key?(deprecation.digest)
238
- deprecation.context = context_saver.call if context_saver
239
251
 
252
+ deprecation.context = context_saver.call if context_saver && allow_context
253
+ deprecation.custom_fingerprint = fingerprinter.call(deprecation) if fingerprinter && allow_context
254
+
255
+ fresh = !@deprecations.key?(deprecation.digest)
240
256
  @deprecations_mutex.synchronize do
241
257
  (@deprecations[deprecation.digest] ||= deprecation).touch
242
258
  end
@@ -248,8 +264,9 @@ class DeprecationCollector
248
264
  def log_deprecation_if_needed(deprecation, fresh)
249
265
  return unless print_to_stderr && !deprecation.ignored?
250
266
  return unless fresh || print_recurring
267
+
251
268
  msg = deprecation.message
252
- msg = "DEPRECATION: #{msg}" unless msg.start_with?('DEPRECAT')
269
+ msg = "DEPRECATION: #{msg}" unless msg.start_with?("DEPRECAT")
253
270
  $stderr.puts(msg) # rubocop:disable Style/StderrPuts
254
271
  end
255
272
 
@@ -261,11 +278,13 @@ class DeprecationCollector
261
278
 
262
279
  def decode_deprecation(digest, data, count, notes)
263
280
  return nil unless data
281
+
264
282
  data = JSON.parse(data, symbolize_names: true)
265
283
  unless data.is_a?(Hash)
266
- binding.irb
284
+ # this should not happen (this means broken Deprecation#to_json or some data curruption)
267
285
  return nil
268
286
  end
287
+
269
288
  data[:digest] = digest
270
289
  data[:notes] = JSON.parse(notes, symbolize_names: true) if notes
271
290
  data[:count] = count.to_i if count
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deprecation_collector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vasily Fedoseyev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-04 00:00:00.000000000 Z
11
+ date: 2023-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: appraisal
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: Collects and aggregates warnings and deprecations. Optimized for production
28
42
  environment.
29
43
  email:
@@ -34,6 +48,7 @@ extra_rdoc_files: []
34
48
  files:
35
49
  - ".rspec"
36
50
  - ".rubocop.yml"
51
+ - Appraisals
37
52
  - CHANGELOG.md
38
53
  - Gemfile
39
54
  - Gemfile.lock
@@ -42,6 +57,12 @@ files:
42
57
  - README.md
43
58
  - Rakefile
44
59
  - deprecation_collector.gemspec
60
+ - gemfiles/rails_6.gemfile
61
+ - gemfiles/rails_6.gemfile.lock
62
+ - gemfiles/rails_7.gemfile
63
+ - gemfiles/rails_7.gemfile.lock
64
+ - gemfiles/rails_none.gemfile
65
+ - gemfiles/rails_none.gemfile.lock
45
66
  - lib/deprecation_collector.rb
46
67
  - lib/deprecation_collector/collectors.rb
47
68
  - lib/deprecation_collector/deprecation.rb
@@ -62,14 +83,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
62
83
  requirements:
63
84
  - - ">="
64
85
  - !ruby/object:Gem::Version
65
- version: 2.4.0
86
+ version: 2.5.0
66
87
  required_rubygems_version: !ruby/object:Gem::Requirement
67
88
  requirements:
68
89
  - - ">="
69
90
  - !ruby/object:Gem::Version
70
91
  version: '0'
71
92
  requirements: []
72
- rubygems_version: 3.3.7
93
+ rubygems_version: 3.4.1
73
94
  signing_key:
74
95
  specification_version: 4
75
96
  summary: Collector for ruby/rails deprecations and warnings, suitable for production