daffy_lib 0.1.11 → 0.1.12

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: '019231ab80663c10aa98ec1f3f257fe46bc956e7fc3054c49fff8db887865ed8'
4
- data.tar.gz: 1881fbc251f1fdd8c8af63d22d862cd19386b0ea1282686fb0b747288baa5c61
3
+ metadata.gz: 9db64ec957376066fdd4c4434a0d258bfeaab6a6fe32b40c6365920790d8d0e9
4
+ data.tar.gz: 1eea0b8d84a2796f67a64a4effdf6fe0d81767ad5234773aeff223bd4b8b2f3b
5
5
  SHA512:
6
- metadata.gz: 25df0d5a5e0f2ac83442aeefc1640c324e3d5268372e9ab7ccbae61fa24210bbcf6dee39ad68e7a1aa5da623062ff1e22f160c7ecd792cc11d4fe6021a88e5fe
7
- data.tar.gz: f0ae5f6b0321cc3f232ec6ebcbf1b7e30ed16775166d74f24c1a3d1eeff19a0a13ae3f1fa9bf52039eb43c9b380387842c70a3a42fefa38e31af63c2d8c05739
6
+ metadata.gz: b55cc004e242cbb2d8875c97b67a4ff00c1fab3331ac13545ac04ba08957d6df22235332d4927dae828b5cd447fb464f24e6aa74ee5a929c7e40f310dee6182c
7
+ data.tar.gz: a0b366b62e8c82f448a67e2644b3e69cea236f80e9df561e287a1025b38f614409dc60c3932c1589bd7237e94e4a1e38858a0619f8289fa9842cde6a618bc4b4
data/.circleci/config.yml CHANGED
@@ -4,7 +4,7 @@ jobs:
4
4
  parallelism: 1
5
5
  working_directory: ~/daffy_lib
6
6
  docker:
7
- - image: circleci/ruby:3.0.2
7
+ - image: cimg/ruby:3.2.2
8
8
 
9
9
  steps:
10
10
  - checkout
@@ -27,10 +27,6 @@ jobs:
27
27
  name: Bundle Install
28
28
  command: bundle install
29
29
 
30
- - run:
31
- name: Install libsodium
32
- command: sudo apt-get install libsodium-dev
33
-
34
30
  - save_cache:
35
31
  name: Store bundle cache
36
32
  key: daffy_lib-bundle-{{ checksum "Gemfile.lock" }}
@@ -7,9 +7,9 @@ updates:
7
7
  interval: daily
8
8
  open-pull-requests-limit: 10
9
9
  reviewers:
10
- - kirmsmithzt
10
+ - dragoszt
11
11
  assignees:
12
- - kirksmithzt
12
+ - dragoszt
13
13
  ignore:
14
14
  - dependency-name: rubocop
15
15
  versions:
data/.rubocop.yml CHANGED
@@ -10,7 +10,7 @@ AllCops:
10
10
  - node_modules/**/*
11
11
  - output/**/*
12
12
  - vendor/**/*
13
- TargetRubyVersion: 2.7.2
13
+ TargetRubyVersion: 3.2.2
14
14
  RSpec:
15
15
  Patterns:
16
16
  - _spec.rb
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- ruby '3.0.2'
3
+ ruby '3.2.2'
4
4
 
5
5
  source "https://rubygems.org"
6
6
 
@@ -10,3 +10,23 @@ gem 'attr_encrypted', github: 'Zetatango/attr_encrypted'
10
10
 
11
11
  # Specify your gem's dependencies in porky_lib.gemspec
12
12
  gemspec
13
+
14
+ group :development, :test do
15
+ gem 'bundler'
16
+ gem 'bundler-audit'
17
+ gem 'codecov'
18
+ gem 'factory_bot_rails'
19
+ gem 'rake'
20
+ gem 'rspec'
21
+ gem 'rspec-collection_matchers'
22
+ gem 'rspec_junit_formatter'
23
+ gem 'rspec-mocks'
24
+ gem 'rspec-rails'
25
+ gem 'rubocop'
26
+ gem 'rubocop-performance'
27
+ gem 'rubocop-rspec'
28
+ gem 'rubocop_runner'
29
+ gem 'simplecov'
30
+ gem 'sqlite3'
31
+ gem 'timecop'
32
+ end
data/Gemfile.lock CHANGED
@@ -8,7 +8,7 @@ GIT
8
8
  PATH
9
9
  remote: .
10
10
  specs:
11
- daffy_lib (0.1.11)
11
+ daffy_lib (0.1.12)
12
12
  porky_lib
13
13
  rails
14
14
  redis
@@ -16,255 +16,318 @@ PATH
16
16
  GEM
17
17
  remote: https://rubygems.org/
18
18
  specs:
19
- actioncable (7.0.4.2)
20
- actionpack (= 7.0.4.2)
21
- activesupport (= 7.0.4.2)
19
+ action_text-trix (2.1.19)
20
+ railties
21
+ actioncable (8.1.3.1)
22
+ actionpack (= 8.1.3.1)
23
+ activesupport (= 8.1.3.1)
22
24
  nio4r (~> 2.0)
23
25
  websocket-driver (>= 0.6.1)
24
- actionmailbox (7.0.4.2)
25
- actionpack (= 7.0.4.2)
26
- activejob (= 7.0.4.2)
27
- activerecord (= 7.0.4.2)
28
- activestorage (= 7.0.4.2)
29
- activesupport (= 7.0.4.2)
30
- mail (>= 2.7.1)
31
- net-imap
32
- net-pop
33
- net-smtp
34
- actionmailer (7.0.4.2)
35
- actionpack (= 7.0.4.2)
36
- actionview (= 7.0.4.2)
37
- activejob (= 7.0.4.2)
38
- activesupport (= 7.0.4.2)
39
- mail (~> 2.5, >= 2.5.4)
40
- net-imap
41
- net-pop
42
- net-smtp
43
- rails-dom-testing (~> 2.0)
44
- actionpack (7.0.4.2)
45
- actionview (= 7.0.4.2)
46
- activesupport (= 7.0.4.2)
47
- rack (~> 2.0, >= 2.2.0)
26
+ zeitwerk (~> 2.6)
27
+ actionmailbox (8.1.3.1)
28
+ actionpack (= 8.1.3.1)
29
+ activejob (= 8.1.3.1)
30
+ activerecord (= 8.1.3.1)
31
+ activestorage (= 8.1.3.1)
32
+ activesupport (= 8.1.3.1)
33
+ mail (>= 2.8.0)
34
+ actionmailer (8.1.3.1)
35
+ actionpack (= 8.1.3.1)
36
+ actionview (= 8.1.3.1)
37
+ activejob (= 8.1.3.1)
38
+ activesupport (= 8.1.3.1)
39
+ mail (>= 2.8.0)
40
+ rails-dom-testing (~> 2.2)
41
+ actionpack (8.1.3.1)
42
+ actionview (= 8.1.3.1)
43
+ activesupport (= 8.1.3.1)
44
+ nokogiri (>= 1.8.5)
45
+ rack (>= 2.2.4)
46
+ rack-session (>= 1.0.1)
48
47
  rack-test (>= 0.6.3)
49
- rails-dom-testing (~> 2.0)
50
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
51
- actiontext (7.0.4.2)
52
- actionpack (= 7.0.4.2)
53
- activerecord (= 7.0.4.2)
54
- activestorage (= 7.0.4.2)
55
- activesupport (= 7.0.4.2)
48
+ rails-dom-testing (~> 2.2)
49
+ rails-html-sanitizer (~> 1.6)
50
+ useragent (~> 0.16)
51
+ actiontext (8.1.3.1)
52
+ action_text-trix (~> 2.1.15)
53
+ actionpack (= 8.1.3.1)
54
+ activerecord (= 8.1.3.1)
55
+ activestorage (= 8.1.3.1)
56
+ activesupport (= 8.1.3.1)
56
57
  globalid (>= 0.6.0)
57
58
  nokogiri (>= 1.8.5)
58
- actionview (7.0.4.2)
59
- activesupport (= 7.0.4.2)
59
+ actionview (8.1.3.1)
60
+ activesupport (= 8.1.3.1)
60
61
  builder (~> 3.1)
61
- erubi (~> 1.4)
62
- rails-dom-testing (~> 2.0)
63
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
64
- activejob (7.0.4.2)
65
- activesupport (= 7.0.4.2)
62
+ erubi (~> 1.11)
63
+ rails-dom-testing (~> 2.2)
64
+ rails-html-sanitizer (~> 1.6)
65
+ activejob (8.1.3.1)
66
+ activesupport (= 8.1.3.1)
66
67
  globalid (>= 0.3.6)
67
- activemodel (7.0.4.2)
68
- activesupport (= 7.0.4.2)
69
- activerecord (7.0.4.2)
70
- activemodel (= 7.0.4.2)
71
- activesupport (= 7.0.4.2)
72
- activestorage (7.0.4.2)
73
- actionpack (= 7.0.4.2)
74
- activejob (= 7.0.4.2)
75
- activerecord (= 7.0.4.2)
76
- activesupport (= 7.0.4.2)
68
+ activemodel (8.1.3.1)
69
+ activesupport (= 8.1.3.1)
70
+ activerecord (8.1.3.1)
71
+ activemodel (= 8.1.3.1)
72
+ activesupport (= 8.1.3.1)
73
+ timeout (>= 0.4.0)
74
+ activestorage (8.1.3.1)
75
+ actionpack (= 8.1.3.1)
76
+ activejob (= 8.1.3.1)
77
+ activerecord (= 8.1.3.1)
78
+ activesupport (= 8.1.3.1)
77
79
  marcel (~> 1.0)
78
- mini_mime (>= 1.1.0)
79
- activesupport (7.0.4.2)
80
- concurrent-ruby (~> 1.0, >= 1.0.2)
80
+ activesupport (8.1.3.1)
81
+ base64
82
+ bigdecimal
83
+ concurrent-ruby (~> 1.0, >= 1.3.1)
84
+ connection_pool (>= 2.2.5)
85
+ drb
81
86
  i18n (>= 1.6, < 2)
87
+ json
88
+ logger (>= 1.4.2)
82
89
  minitest (>= 5.1)
83
- tzinfo (~> 2.0)
90
+ securerandom (>= 0.3)
91
+ tzinfo (~> 2.0, >= 2.0.5)
92
+ uri (>= 0.13.1)
84
93
  ast (2.4.2)
85
- aws-eventstream (1.2.0)
86
- aws-partitions (1.701.0)
87
- aws-sdk-core (3.170.0)
88
- aws-eventstream (~> 1, >= 1.0.2)
89
- aws-partitions (~> 1, >= 1.651.0)
90
- aws-sigv4 (~> 1.5)
94
+ aws-eventstream (1.4.0)
95
+ aws-partitions (1.1284.0)
96
+ aws-sdk-core (3.254.1)
97
+ aws-eventstream (~> 1, >= 1.3.0)
98
+ aws-partitions (~> 1, >= 1.992.0)
99
+ aws-sigv4 (~> 1.9)
100
+ base64
101
+ bigdecimal
91
102
  jmespath (~> 1, >= 1.6.1)
92
- aws-sdk-kms (1.62.0)
93
- aws-sdk-core (~> 3, >= 3.165.0)
94
- aws-sigv4 (~> 1.1)
95
- aws-sdk-s3 (1.119.0)
96
- aws-sdk-core (~> 3, >= 3.165.0)
103
+ logger
104
+ aws-sdk-kms (1.130.0)
105
+ aws-sdk-core (~> 3, >= 3.254.0)
106
+ aws-sigv4 (~> 1.5)
107
+ aws-sdk-s3 (1.230.0)
108
+ aws-sdk-core (~> 3, >= 3.254.1)
97
109
  aws-sdk-kms (~> 1)
98
- aws-sigv4 (~> 1.4)
99
- aws-sigv4 (1.5.2)
110
+ aws-sigv4 (~> 1.5)
111
+ aws-sigv4 (1.12.1)
100
112
  aws-eventstream (~> 1, >= 1.0.2)
101
- builder (3.2.4)
113
+ base64 (0.3.0)
114
+ bigdecimal (4.1.2)
115
+ builder (3.3.0)
102
116
  bundler-audit (0.9.1)
103
117
  bundler (>= 1.2.0, < 3)
104
118
  thor (~> 1.0)
105
119
  codecov (0.2.12)
106
120
  json
107
121
  simplecov
108
- concurrent-ruby (1.2.0)
109
- connection_pool (2.3.0)
110
- crass (1.0.6)
111
- date (3.3.3)
112
- diff-lcs (1.5.0)
122
+ concurrent-ruby (1.3.8)
123
+ connection_pool (3.0.2)
124
+ crass (1.0.7)
125
+ date (3.5.1)
126
+ diff-lcs (1.5.1)
113
127
  docile (1.4.0)
128
+ drb (2.2.3)
114
129
  encryptor (3.0.0)
115
- erubi (1.12.0)
116
- factory_bot (6.2.0)
130
+ erb (6.0.7)
131
+ erubi (1.13.1)
132
+ factory_bot (6.4.5)
117
133
  activesupport (>= 5.0.0)
118
- factory_bot_rails (6.2.0)
119
- factory_bot (~> 6.2.0)
134
+ factory_bot_rails (6.4.3)
135
+ factory_bot (~> 6.4)
120
136
  railties (>= 5.0.0)
121
- ffi (1.15.5)
122
- globalid (1.1.0)
123
- activesupport (>= 5.0)
124
- i18n (1.12.0)
137
+ ffi (1.16.3)
138
+ globalid (1.4.0)
139
+ activesupport (>= 6.1)
140
+ i18n (1.15.2)
125
141
  concurrent-ruby (~> 1.0)
142
+ io-console (0.9.2)
143
+ irb (1.18.0)
144
+ pp (>= 0.6.0)
145
+ prism (>= 1.3.0)
146
+ rdoc (>= 4.0.0)
147
+ reline (>= 0.4.2)
126
148
  jmespath (1.6.2)
127
- json (2.6.3)
128
- loofah (2.19.1)
149
+ json (2.7.2)
150
+ language_server-protocol (3.17.0.3)
151
+ logger (1.7.0)
152
+ loofah (2.25.2)
129
153
  crass (~> 1.0.2)
130
- nokogiri (>= 1.5.9)
131
- mail (2.8.0.1)
154
+ nokogiri (>= 1.12.0)
155
+ mail (2.9.1)
156
+ logger
132
157
  mini_mime (>= 0.1.1)
133
158
  net-imap
134
159
  net-pop
135
160
  net-smtp
136
- marcel (1.0.2)
137
- method_source (1.0.0)
138
- mini_mime (1.1.2)
139
- mini_portile2 (2.8.1)
140
- minitest (5.17.0)
141
- msgpack (1.6.0)
142
- net-imap (0.3.4)
161
+ marcel (1.2.1)
162
+ mini_mime (1.1.5)
163
+ mini_portile2 (2.8.9)
164
+ minitest (6.0.6)
165
+ drb (~> 2.0)
166
+ prism (~> 1.5)
167
+ msgpack (1.8.4)
168
+ net-imap (0.6.6)
143
169
  date
144
170
  net-protocol
145
171
  net-pop (0.1.2)
146
172
  net-protocol
147
- net-protocol (0.2.1)
173
+ net-protocol (0.3.0)
148
174
  timeout
149
- net-smtp (0.3.3)
175
+ net-smtp (0.5.1)
150
176
  net-protocol
151
- nio4r (2.5.8)
152
- nokogiri (1.14.0)
153
- mini_portile2 (~> 2.8.0)
177
+ nio4r (2.7.5)
178
+ nokogiri (1.19.4)
179
+ mini_portile2 (~> 2.8.2)
154
180
  racc (~> 1.4)
155
- parallel (1.22.1)
156
- parser (3.2.0.0)
181
+ parallel (1.24.0)
182
+ parser (3.3.1.0)
157
183
  ast (~> 2.4.1)
158
- porky_lib (0.11.2)
184
+ racc
185
+ porky_lib (0.11.3)
159
186
  aws-sdk-kms
160
187
  aws-sdk-s3
161
188
  msgpack
162
189
  rbnacl (= 7.1.1)
163
- racc (1.6.2)
164
- rack (2.2.6.2)
165
- rack-test (2.0.2)
190
+ pp (0.6.4)
191
+ prettyprint
192
+ prettyprint (0.2.0)
193
+ prism (1.9.0)
194
+ racc (1.8.1)
195
+ rack (3.2.7)
196
+ rack-session (2.1.2)
197
+ base64 (>= 0.1.0)
198
+ rack (>= 3.0.0)
199
+ rack-test (2.2.0)
166
200
  rack (>= 1.3)
167
- rails (7.0.4.2)
168
- actioncable (= 7.0.4.2)
169
- actionmailbox (= 7.0.4.2)
170
- actionmailer (= 7.0.4.2)
171
- actionpack (= 7.0.4.2)
172
- actiontext (= 7.0.4.2)
173
- actionview (= 7.0.4.2)
174
- activejob (= 7.0.4.2)
175
- activemodel (= 7.0.4.2)
176
- activerecord (= 7.0.4.2)
177
- activestorage (= 7.0.4.2)
178
- activesupport (= 7.0.4.2)
201
+ rackup (2.3.1)
202
+ rack (>= 3)
203
+ rails (8.1.3.1)
204
+ actioncable (= 8.1.3.1)
205
+ actionmailbox (= 8.1.3.1)
206
+ actionmailer (= 8.1.3.1)
207
+ actionpack (= 8.1.3.1)
208
+ actiontext (= 8.1.3.1)
209
+ actionview (= 8.1.3.1)
210
+ activejob (= 8.1.3.1)
211
+ activemodel (= 8.1.3.1)
212
+ activerecord (= 8.1.3.1)
213
+ activestorage (= 8.1.3.1)
214
+ activesupport (= 8.1.3.1)
179
215
  bundler (>= 1.15.0)
180
- railties (= 7.0.4.2)
181
- rails-dom-testing (2.0.3)
182
- activesupport (>= 4.2.0)
216
+ railties (= 8.1.3.1)
217
+ rails-dom-testing (2.3.0)
218
+ activesupport (>= 5.0.0)
219
+ minitest
183
220
  nokogiri (>= 1.6)
184
- rails-html-sanitizer (1.5.0)
185
- loofah (~> 2.19, >= 2.19.1)
186
- railties (7.0.4.2)
187
- actionpack (= 7.0.4.2)
188
- activesupport (= 7.0.4.2)
189
- method_source
221
+ rails-html-sanitizer (1.7.1)
222
+ loofah (~> 2.25, >= 2.25.2)
223
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
224
+ railties (8.1.3.1)
225
+ actionpack (= 8.1.3.1)
226
+ activesupport (= 8.1.3.1)
227
+ irb (~> 1.13)
228
+ rackup (>= 1.0.0)
190
229
  rake (>= 12.2)
191
- thor (~> 1.0)
192
- zeitwerk (~> 2.5)
230
+ thor (~> 1.0, >= 1.2.2)
231
+ tsort (>= 0.2)
232
+ zeitwerk (~> 2.6)
193
233
  rainbow (3.1.1)
194
- rake (13.0.6)
234
+ rake (13.4.2)
195
235
  rbnacl (7.1.1)
196
236
  ffi
197
- redis (5.0.6)
198
- redis-client (>= 0.9.0)
199
- redis-client (0.12.1)
237
+ rbs (4.2.0)
238
+ logger
239
+ prism (>= 1.6.0)
240
+ tsort
241
+ rdoc (8.0.0)
242
+ erb
243
+ prism (>= 1.6.0)
244
+ rbs (>= 4.0.0)
245
+ tsort
246
+ redis (5.2.0)
247
+ redis-client (>= 0.22.0)
248
+ redis-client (0.22.1)
200
249
  connection_pool
201
- regexp_parser (2.6.1)
202
- rexml (3.2.5)
203
- rspec (3.12.0)
204
- rspec-core (~> 3.12.0)
205
- rspec-expectations (~> 3.12.0)
206
- rspec-mocks (~> 3.12.0)
207
- rspec-collection_matchers (1.2.0)
250
+ regexp_parser (2.9.0)
251
+ reline (0.7.0)
252
+ io-console (~> 0.5)
253
+ rexml (3.4.4)
254
+ rspec (3.13.0)
255
+ rspec-core (~> 3.13.0)
256
+ rspec-expectations (~> 3.13.0)
257
+ rspec-mocks (~> 3.13.0)
258
+ rspec-collection_matchers (1.2.1)
208
259
  rspec-expectations (>= 2.99.0.beta1)
209
- rspec-core (3.12.0)
210
- rspec-support (~> 3.12.0)
211
- rspec-expectations (3.12.0)
260
+ rspec-core (3.13.0)
261
+ rspec-support (~> 3.13.0)
262
+ rspec-expectations (3.13.0)
212
263
  diff-lcs (>= 1.2.0, < 2.0)
213
- rspec-support (~> 3.12.0)
214
- rspec-mocks (3.12.3)
264
+ rspec-support (~> 3.13.0)
265
+ rspec-mocks (3.13.1)
215
266
  diff-lcs (>= 1.2.0, < 2.0)
216
- rspec-support (~> 3.12.0)
217
- rspec-rails (6.0.1)
267
+ rspec-support (~> 3.13.0)
268
+ rspec-rails (6.1.2)
218
269
  actionpack (>= 6.1)
219
270
  activesupport (>= 6.1)
220
271
  railties (>= 6.1)
221
- rspec-core (~> 3.11)
222
- rspec-expectations (~> 3.11)
223
- rspec-mocks (~> 3.11)
224
- rspec-support (~> 3.11)
225
- rspec-support (3.12.0)
272
+ rspec-core (~> 3.13)
273
+ rspec-expectations (~> 3.13)
274
+ rspec-mocks (~> 3.13)
275
+ rspec-support (~> 3.13)
276
+ rspec-support (3.13.1)
226
277
  rspec_junit_formatter (0.6.0)
227
278
  rspec-core (>= 2, < 4, != 2.12.0)
228
- rubocop (1.43.0)
279
+ rubocop (1.63.4)
229
280
  json (~> 2.3)
281
+ language_server-protocol (>= 3.17.0)
230
282
  parallel (~> 1.10)
231
- parser (>= 3.2.0.0)
283
+ parser (>= 3.3.0.2)
232
284
  rainbow (>= 2.2.2, < 4.0)
233
285
  regexp_parser (>= 1.8, < 3.0)
234
286
  rexml (>= 3.2.5, < 4.0)
235
- rubocop-ast (>= 1.24.1, < 2.0)
287
+ rubocop-ast (>= 1.31.1, < 2.0)
236
288
  ruby-progressbar (~> 1.7)
237
289
  unicode-display_width (>= 2.4.0, < 3.0)
238
- rubocop-ast (1.24.1)
239
- parser (>= 3.1.1.0)
240
- rubocop-capybara (2.17.0)
290
+ rubocop-ast (1.31.3)
291
+ parser (>= 3.3.1.0)
292
+ rubocop-capybara (2.20.0)
293
+ rubocop (~> 1.41)
294
+ rubocop-factory_bot (2.25.1)
241
295
  rubocop (~> 1.41)
242
- rubocop-performance (1.15.2)
243
- rubocop (>= 1.7.0, < 2.0)
244
- rubocop-ast (>= 0.4.0)
245
- rubocop-rspec (2.18.1)
246
- rubocop (~> 1.33)
296
+ rubocop-performance (1.21.0)
297
+ rubocop (>= 1.48.1, < 2.0)
298
+ rubocop-ast (>= 1.31.1, < 2.0)
299
+ rubocop-rspec (2.29.2)
300
+ rubocop (~> 1.40)
247
301
  rubocop-capybara (~> 2.17)
302
+ rubocop-factory_bot (~> 2.22)
303
+ rubocop-rspec_rails (~> 2.28)
304
+ rubocop-rspec_rails (2.28.3)
305
+ rubocop (~> 1.40)
248
306
  rubocop_runner (2.2.1)
249
- ruby-progressbar (1.11.0)
307
+ ruby-progressbar (1.13.0)
308
+ securerandom (0.4.1)
250
309
  simplecov (0.22.0)
251
310
  docile (~> 1.1)
252
311
  simplecov-html (~> 0.11)
253
312
  simplecov_json_formatter (~> 0.1)
254
313
  simplecov-html (0.12.3)
255
314
  simplecov_json_formatter (0.1.4)
256
- sqlite3 (1.6.0)
315
+ sqlite3 (2.9.6)
257
316
  mini_portile2 (~> 2.8.0)
258
- thor (1.2.1)
259
- timecop (0.9.6)
260
- timeout (0.3.1)
261
- tzinfo (2.0.5)
317
+ thor (1.5.0)
318
+ timecop (0.9.8)
319
+ timeout (0.6.1)
320
+ tsort (0.2.0)
321
+ tzinfo (2.0.6)
262
322
  concurrent-ruby (~> 1.0)
263
- unicode-display_width (2.4.2)
264
- websocket-driver (0.7.5)
323
+ unicode-display_width (2.5.0)
324
+ uri (1.1.1)
325
+ useragent (0.16.11)
326
+ websocket-driver (0.8.2)
327
+ base64
265
328
  websocket-extensions (>= 0.1.0)
266
329
  websocket-extensions (0.1.5)
267
- zeitwerk (2.6.6)
330
+ zeitwerk (2.8.3)
268
331
 
269
332
  PLATFORMS
270
333
  ruby
@@ -291,7 +354,7 @@ DEPENDENCIES
291
354
  timecop
292
355
 
293
356
  RUBY VERSION
294
- ruby 3.0.2p107
357
+ ruby 3.2.2p53
295
358
 
296
359
  BUNDLED WITH
297
360
  2.2.22
data/daffy_lib.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = 'A library for caching encryptor'
12
12
  spec.homepage = 'https://github.com/Zetatango/daffy_lib'
13
13
 
14
- spec.required_ruby_version = '>= 2.7.1'
14
+ spec.required_ruby_version = '>= 3.2.2'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
17
  f.match(%r{^(test|spec|features)/})
@@ -20,24 +20,6 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_development_dependency 'bundler'
24
- spec.add_development_dependency 'bundler-audit'
25
- spec.add_development_dependency 'codecov'
26
- spec.add_development_dependency 'factory_bot_rails'
27
- spec.add_development_dependency 'rake'
28
- spec.add_development_dependency 'rspec'
29
- spec.add_development_dependency 'rspec-collection_matchers'
30
- spec.add_development_dependency 'rspec_junit_formatter'
31
- spec.add_development_dependency 'rspec-mocks'
32
- spec.add_development_dependency 'rspec-rails'
33
- spec.add_development_dependency 'rubocop'
34
- spec.add_development_dependency 'rubocop-performance'
35
- spec.add_development_dependency 'rubocop-rspec'
36
- spec.add_development_dependency 'rubocop_runner'
37
- spec.add_development_dependency 'simplecov'
38
- spec.add_development_dependency 'sqlite3'
39
- spec.add_development_dependency 'timecop'
40
-
41
23
  spec.add_dependency 'porky_lib'
42
24
  spec.add_dependency 'rails'
43
25
  spec.add_dependency 'redis'
@@ -6,8 +6,8 @@ class DaffyLib::CachingEncryptor
6
6
  class DecryptionFailedException < CachingEncryptorException; end
7
7
  class InvalidParameterException < CachingEncryptorException; end
8
8
 
9
- def self.zt_encrypt(*args, &_block)
10
- data, partition_guid, encryption_epoch, expires_in, cmk_key_id = validate_encrypt_params(*args)
9
+ def self.zt_encrypt(*, &)
10
+ data, partition_guid, encryption_epoch, expires_in, cmk_key_id = validate_encrypt_params(*)
11
11
 
12
12
  kms = DaffyLib::KeyManagementService.new(partition_guid, expires_in, cmk_key_id)
13
13
 
@@ -37,13 +37,13 @@ class DaffyLib::CachingEncryptor
37
37
  raise EncryptionFailedException
38
38
  end
39
39
 
40
- def self.zt_decrypt(*args, &block)
41
- value, expires_in, cmk_key_id = validate_decrypt_params(*args)
40
+ def self.zt_decrypt(*, &block)
41
+ value, expires_in, cmk_key_id = validate_decrypt_params(*)
42
42
 
43
43
  ciphertext_info = JSON.parse(value, symbolize_names: true)
44
44
 
45
45
  # Call the legacy decrypt function if there is no key_guid present
46
- return legacy_decrypt(*args, block) unless ciphertext_info.key?(:key_guid)
46
+ return legacy_decrypt(*, block) unless ciphertext_info.key?(:key_guid)
47
47
 
48
48
  key_guid = ciphertext_info[:key_guid]
49
49
  ciphertext = Base64.decode64(ciphertext_info[:data])
@@ -77,7 +77,7 @@ class DaffyLib::CachingEncryptor
77
77
  raise DecryptionFailedException
78
78
  end
79
79
 
80
- def self.legacy_decrypt(*args, &_block)
80
+ def self.legacy_decrypt(*args, &)
81
81
  ciphertext_data = JSON.parse(args.first[:value], symbolize_names: true)
82
82
  ciphertext_key = Base64.decode64(ciphertext_data[:key])
83
83
  ciphertext = Base64.decode64(ciphertext_data[:data])
@@ -5,7 +5,7 @@ require 'active_support'
5
5
  module DaffyLib::HasGuid
6
6
  extend ActiveSupport::Concern
7
7
 
8
- REGEXP = /^\w+_\w+$/.freeze
8
+ REGEXP = /^\w+_\w+$/
9
9
 
10
10
  mattr_accessor :registry do
11
11
  {}
@@ -12,7 +12,7 @@ class DaffyLib::KeyManagementService
12
12
  KEY_MANAGEMENT_SERVICE_CACHE_NAMESPACE = :key_management_service
13
13
  KEY_VERSION = 'KeyManagementService::V1'
14
14
 
15
- RECORD_NOT_UNIQUE_REGEX = /has already been taken/.freeze
15
+ RECORD_NOT_UNIQUE_REGEX = /has already been taken/
16
16
 
17
17
  def initialize(partition_guid, expires_in, cmk_key_id)
18
18
  raise InvalidParameterException unless partition_guid.present? && expires_in.present? && cmk_key_id.present?
@@ -72,8 +72,19 @@ class DaffyLib::KeyManagementService
72
72
 
73
73
  encoded_key = Base64.encode64(data_encryption_key)
74
74
 
75
- key = DaffyLib::EncryptionKey.create!(partition_guid: @partition_guid, key_epoch: encryption_epoch,
76
- encrypted_data_encryption_key: encoded_key, version: KEY_VERSION)
75
+ # requires_new: true opens a real SAVEPOINT rather than silently joining
76
+ # whatever transaction the caller already has open. Without it, a
77
+ # concurrent caller racing to create the same partition_guid/key_epoch row
78
+ # doesn't just raise RecordNotUnique here -- it poisons the caller's entire
79
+ # surrounding transaction, so the "retrying find" recovery below (and
80
+ # anything else the caller does on that connection afterward) fails too,
81
+ # with PG::InFailedSqlTransaction, since Postgres rejects every statement
82
+ # on a transaction until it's rolled back. The savepoint confines that
83
+ # rollback to just this insert.
84
+ key = ActiveRecord::Base.transaction(requires_new: true) do
85
+ DaffyLib::EncryptionKey.create!(partition_guid: @partition_guid, key_epoch: encryption_epoch,
86
+ encrypted_data_encryption_key: encoded_key, version: KEY_VERSION)
87
+ end
77
88
 
78
89
  cache_plaintext_key(key, plaintext_key)
79
90
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DaffyLib
4
- VERSION = "0.1.11"
4
+ VERSION = "0.1.12"
5
5
  end
@@ -65,7 +65,7 @@ namespace :db do
65
65
  model_classname.all.each do |record|
66
66
  encrypted_attributes.each do |attribute|
67
67
  value = record.send(attribute)
68
- record.send("#{attribute}=", value) unless value.blank?
68
+ record.send(:"#{attribute}=", value) unless value.blank?
69
69
  end
70
70
 
71
71
  record.save!(validate: false)
metadata CHANGED
@@ -1,253 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daffy_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benoît Jeaurond, Weiyun Lu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-27 00:00:00.000000000 Z
11
+ date: 2026-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler-audit
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'
41
- - !ruby/object:Gem::Dependency
42
- name: codecov
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: factory_bot_rails
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rspec-collection_matchers
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec_junit_formatter
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec-mocks
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: rspec-rails
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: rubocop
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: rubocop-performance
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: '0'
181
- - !ruby/object:Gem::Dependency
182
- name: rubocop-rspec
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: rubocop_runner
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: '0'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: '0'
209
- - !ruby/object:Gem::Dependency
210
- name: simplecov
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - ">="
214
- - !ruby/object:Gem::Version
215
- version: '0'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - ">="
221
- - !ruby/object:Gem::Version
222
- version: '0'
223
- - !ruby/object:Gem::Dependency
224
- name: sqlite3
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: '0'
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - ">="
235
- - !ruby/object:Gem::Version
236
- version: '0'
237
- - !ruby/object:Gem::Dependency
238
- name: timecop
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - ">="
242
- - !ruby/object:Gem::Version
243
- version: '0'
244
- type: :development
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - ">="
249
- - !ruby/object:Gem::Version
250
- version: '0'
251
13
  - !ruby/object:Gem::Dependency
252
14
  name: porky_lib
253
15
  requirement: !ruby/object:Gem::Requirement
@@ -337,14 +99,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
337
99
  requirements:
338
100
  - - ">="
339
101
  - !ruby/object:Gem::Version
340
- version: 2.7.1
102
+ version: 3.2.2
341
103
  required_rubygems_version: !ruby/object:Gem::Requirement
342
104
  requirements:
343
105
  - - ">="
344
106
  - !ruby/object:Gem::Version
345
107
  version: '0'
346
108
  requirements: []
347
- rubygems_version: 3.2.22
109
+ rubygems_version: 3.5.22
348
110
  signing_key:
349
111
  specification_version: 4
350
112
  summary: A library for caching encryptor