daffy_lib 0.1.10 → 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: 6b9625bf9dedae1ae933a4a48e0278355cd1f7ae234d88a3767228971407af4d
4
- data.tar.gz: dd392d941ff69ab89ace5b31ae9f647c1b9ce8205f8512fd99a8003b884f58df
3
+ metadata.gz: 9db64ec957376066fdd4c4434a0d258bfeaab6a6fe32b40c6365920790d8d0e9
4
+ data.tar.gz: 1eea0b8d84a2796f67a64a4effdf6fe0d81767ad5234773aeff223bd4b8b2f3b
5
5
  SHA512:
6
- metadata.gz: be4afa3edc7e27f52b019f2937b257896046cab33246338b955741600281dd0afdfd7cf6b40437c946c386d99a0d465457815ea73d4da35cbba77e7d80852075
7
- data.tar.gz: 0d2b2ee76dbf8510c9e1a36921324117704abac4d1c70f88f842799fff8a9292706beeec04034cee985ad040db28c41e8677eabe570cb7e706faf516bdaa2881
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
- - weiyunlu
10
+ - dragoszt
11
11
  assignees:
12
- - weiyunlu
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.8)
11
+ daffy_lib (0.1.12)
12
12
  porky_lib
13
13
  rails
14
14
  redis
@@ -16,246 +16,318 @@ PATH
16
16
  GEM
17
17
  remote: https://rubygems.org/
18
18
  specs:
19
- actioncable (7.0.4)
20
- actionpack (= 7.0.4)
21
- activesupport (= 7.0.4)
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)
25
- actionpack (= 7.0.4)
26
- activejob (= 7.0.4)
27
- activerecord (= 7.0.4)
28
- activestorage (= 7.0.4)
29
- activesupport (= 7.0.4)
30
- mail (>= 2.7.1)
31
- net-imap
32
- net-pop
33
- net-smtp
34
- actionmailer (7.0.4)
35
- actionpack (= 7.0.4)
36
- actionview (= 7.0.4)
37
- activejob (= 7.0.4)
38
- activesupport (= 7.0.4)
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)
45
- actionview (= 7.0.4)
46
- activesupport (= 7.0.4)
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)
52
- actionpack (= 7.0.4)
53
- activerecord (= 7.0.4)
54
- activestorage (= 7.0.4)
55
- activesupport (= 7.0.4)
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)
59
- activesupport (= 7.0.4)
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)
65
- activesupport (= 7.0.4)
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)
68
- activesupport (= 7.0.4)
69
- activerecord (7.0.4)
70
- activemodel (= 7.0.4)
71
- activesupport (= 7.0.4)
72
- activestorage (7.0.4)
73
- actionpack (= 7.0.4)
74
- activejob (= 7.0.4)
75
- activerecord (= 7.0.4)
76
- activesupport (= 7.0.4)
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)
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.677.0)
87
- aws-sdk-core (3.168.4)
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.61.0)
93
- aws-sdk-core (~> 3, >= 3.165.0)
94
- aws-sigv4 (~> 1.1)
95
- aws-sdk-s3 (1.117.2)
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
- codecov (0.6.0)
106
- simplecov (>= 0.15, < 0.22)
107
- concurrent-ruby (1.1.10)
108
- connection_pool (2.3.0)
109
- crass (1.0.6)
110
- diff-lcs (1.5.0)
119
+ codecov (0.2.12)
120
+ json
121
+ simplecov
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)
111
127
  docile (1.4.0)
128
+ drb (2.2.3)
112
129
  encryptor (3.0.0)
113
- erubi (1.11.0)
114
- factory_bot (6.2.0)
130
+ erb (6.0.7)
131
+ erubi (1.13.1)
132
+ factory_bot (6.4.5)
115
133
  activesupport (>= 5.0.0)
116
- factory_bot_rails (6.2.0)
117
- factory_bot (~> 6.2.0)
134
+ factory_bot_rails (6.4.3)
135
+ factory_bot (~> 6.4)
118
136
  railties (>= 5.0.0)
119
- ffi (1.15.5)
120
- globalid (1.0.0)
121
- activesupport (>= 5.0)
122
- i18n (1.12.0)
137
+ ffi (1.16.3)
138
+ globalid (1.4.0)
139
+ activesupport (>= 6.1)
140
+ i18n (1.15.2)
123
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)
124
148
  jmespath (1.6.2)
125
- json (2.6.3)
126
- 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)
127
153
  crass (~> 1.0.2)
128
- nokogiri (>= 1.5.9)
129
- mail (2.7.1)
154
+ nokogiri (>= 1.12.0)
155
+ mail (2.9.1)
156
+ logger
130
157
  mini_mime (>= 0.1.1)
131
- marcel (1.0.2)
132
- method_source (1.0.0)
133
- mini_mime (1.1.2)
134
- mini_portile2 (2.8.0)
135
- minitest (5.16.3)
136
- msgpack (1.6.0)
137
- net-imap (0.3.1)
158
+ net-imap
159
+ net-pop
160
+ net-smtp
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)
169
+ date
138
170
  net-protocol
139
171
  net-pop (0.1.2)
140
172
  net-protocol
141
- net-protocol (0.1.3)
173
+ net-protocol (0.3.0)
142
174
  timeout
143
- net-smtp (0.3.3)
175
+ net-smtp (0.5.1)
144
176
  net-protocol
145
- nio4r (2.5.8)
146
- nokogiri (1.13.10)
147
- mini_portile2 (~> 2.8.0)
177
+ nio4r (2.7.5)
178
+ nokogiri (1.19.4)
179
+ mini_portile2 (~> 2.8.2)
148
180
  racc (~> 1.4)
149
- parallel (1.22.1)
150
- parser (3.1.3.0)
181
+ parallel (1.24.0)
182
+ parser (3.3.1.0)
151
183
  ast (~> 2.4.1)
152
- porky_lib (0.11.2)
184
+ racc
185
+ porky_lib (0.11.3)
153
186
  aws-sdk-kms
154
187
  aws-sdk-s3
155
188
  msgpack
156
189
  rbnacl (= 7.1.1)
157
- racc (1.6.1)
158
- rack (2.2.4)
159
- 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)
160
200
  rack (>= 1.3)
161
- rails (7.0.4)
162
- actioncable (= 7.0.4)
163
- actionmailbox (= 7.0.4)
164
- actionmailer (= 7.0.4)
165
- actionpack (= 7.0.4)
166
- actiontext (= 7.0.4)
167
- actionview (= 7.0.4)
168
- activejob (= 7.0.4)
169
- activemodel (= 7.0.4)
170
- activerecord (= 7.0.4)
171
- activestorage (= 7.0.4)
172
- activesupport (= 7.0.4)
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)
173
215
  bundler (>= 1.15.0)
174
- railties (= 7.0.4)
175
- rails-dom-testing (2.0.3)
176
- activesupport (>= 4.2.0)
216
+ railties (= 8.1.3.1)
217
+ rails-dom-testing (2.3.0)
218
+ activesupport (>= 5.0.0)
219
+ minitest
177
220
  nokogiri (>= 1.6)
178
- rails-html-sanitizer (1.4.4)
179
- loofah (~> 2.19, >= 2.19.1)
180
- railties (7.0.4)
181
- actionpack (= 7.0.4)
182
- activesupport (= 7.0.4)
183
- 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)
184
229
  rake (>= 12.2)
185
- thor (~> 1.0)
186
- zeitwerk (~> 2.5)
230
+ thor (~> 1.0, >= 1.2.2)
231
+ tsort (>= 0.2)
232
+ zeitwerk (~> 2.6)
187
233
  rainbow (3.1.1)
188
- rake (13.0.6)
234
+ rake (13.4.2)
189
235
  rbnacl (7.1.1)
190
236
  ffi
191
- redis (5.0.5)
192
- redis-client (>= 0.9.0)
193
- redis-client (0.11.2)
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)
194
249
  connection_pool
195
- regexp_parser (2.6.1)
196
- rexml (3.2.5)
197
- rspec (3.12.0)
198
- rspec-core (~> 3.12.0)
199
- rspec-expectations (~> 3.12.0)
200
- rspec-mocks (~> 3.12.0)
201
- 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)
202
259
  rspec-expectations (>= 2.99.0.beta1)
203
- rspec-core (3.12.0)
204
- rspec-support (~> 3.12.0)
205
- rspec-expectations (3.12.0)
260
+ rspec-core (3.13.0)
261
+ rspec-support (~> 3.13.0)
262
+ rspec-expectations (3.13.0)
206
263
  diff-lcs (>= 1.2.0, < 2.0)
207
- rspec-support (~> 3.12.0)
208
- rspec-mocks (3.12.1)
264
+ rspec-support (~> 3.13.0)
265
+ rspec-mocks (3.13.1)
209
266
  diff-lcs (>= 1.2.0, < 2.0)
210
- rspec-support (~> 3.12.0)
211
- rspec-rails (6.0.1)
267
+ rspec-support (~> 3.13.0)
268
+ rspec-rails (6.1.2)
212
269
  actionpack (>= 6.1)
213
270
  activesupport (>= 6.1)
214
271
  railties (>= 6.1)
215
- rspec-core (~> 3.11)
216
- rspec-expectations (~> 3.11)
217
- rspec-mocks (~> 3.11)
218
- rspec-support (~> 3.11)
219
- 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)
220
277
  rspec_junit_formatter (0.6.0)
221
278
  rspec-core (>= 2, < 4, != 2.12.0)
222
- rubocop (1.39.0)
279
+ rubocop (1.63.4)
223
280
  json (~> 2.3)
281
+ language_server-protocol (>= 3.17.0)
224
282
  parallel (~> 1.10)
225
- parser (>= 3.1.2.1)
283
+ parser (>= 3.3.0.2)
226
284
  rainbow (>= 2.2.2, < 4.0)
227
285
  regexp_parser (>= 1.8, < 3.0)
228
286
  rexml (>= 3.2.5, < 4.0)
229
- rubocop-ast (>= 1.23.0, < 2.0)
287
+ rubocop-ast (>= 1.31.1, < 2.0)
230
288
  ruby-progressbar (~> 1.7)
231
- unicode-display_width (>= 1.4.0, < 3.0)
232
- rubocop-ast (1.24.0)
233
- parser (>= 3.1.1.0)
234
- rubocop-performance (1.15.1)
235
- rubocop (>= 1.7.0, < 2.0)
236
- rubocop-ast (>= 0.4.0)
237
- rubocop-rspec (2.16.0)
238
- rubocop (~> 1.33)
289
+ unicode-display_width (>= 2.4.0, < 3.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)
295
+ rubocop (~> 1.41)
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)
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)
239
306
  rubocop_runner (2.2.1)
240
- ruby-progressbar (1.11.0)
241
- simplecov (0.21.2)
307
+ ruby-progressbar (1.13.0)
308
+ securerandom (0.4.1)
309
+ simplecov (0.22.0)
242
310
  docile (~> 1.1)
243
311
  simplecov-html (~> 0.11)
244
312
  simplecov_json_formatter (~> 0.1)
245
313
  simplecov-html (0.12.3)
246
- simplecov_json_formatter (0.1.3)
247
- sqlite3 (1.5.4)
314
+ simplecov_json_formatter (0.1.4)
315
+ sqlite3 (2.9.6)
248
316
  mini_portile2 (~> 2.8.0)
249
- thor (1.2.1)
250
- timecop (0.9.6)
251
- timeout (0.3.0)
252
- 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)
253
322
  concurrent-ruby (~> 1.0)
254
- unicode-display_width (2.3.0)
255
- 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
256
328
  websocket-extensions (>= 0.1.0)
257
329
  websocket-extensions (0.1.5)
258
- zeitwerk (2.6.1)
330
+ zeitwerk (2.8.3)
259
331
 
260
332
  PLATFORMS
261
333
  ruby
@@ -282,7 +354,7 @@ DEPENDENCIES
282
354
  timecop
283
355
 
284
356
  RUBY VERSION
285
- ruby 3.0.2p107
357
+ ruby 3.2.2p53
286
358
 
287
359
  BUNDLED WITH
288
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.10"
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.10
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: 2022-12-16 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