role_fu 0.3.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b631da54e6c8f434750a6246d69bb8b7add820b2fc5f4749175572ef1c63154
4
- data.tar.gz: 570b07c252c379dad3196093527e3b30c9baba27083bc33ff4f034aa187974d8
3
+ metadata.gz: baa4ff8c1fb945a9a511b86be18ecf899e03b72713faebaa2f903068a556fd26
4
+ data.tar.gz: cc7f9603db34f8363232db64520bfbc2f80cdd67b7488a508555dffaeba47fcf
5
5
  SHA512:
6
- metadata.gz: e8d5e5db755e6e38b447daa753141e01bb67b157292fceb3b363bf489ccba6662c260eabef549e535a182e8add734d683acb0a5ae05979ff2a1343d5907aead0
7
- data.tar.gz: 524e26d7e7e308cbcde01bf8e067c01a853a69a4c94a61f22c7ce31500d0eb7ed963094cdcb3cfd26ec6f88d5f9e84a1ea757ba5e706aca6e138c2655abe1b99
6
+ metadata.gz: 6fc1e0fccbd72b33b2d6df3d4ccee047d513347dae12f6ab05a8b8626c7d2e115e0206044a02b72b1443cde6628686de1898ccce982859762b724c444eca6dcf
7
+ data.tar.gz: c4ab6403ff5658dfa5f9a7335da11fabeaea677e5b33c4b42353e8ec1e310deb64f3157da7420ce3ae310ca9aee34b60ed77372804dbe6d526816fe78fa2d812
data/CHANGELOG.md CHANGED
@@ -1,4 +1,30 @@
1
- ## [Unreleased]
1
+ ## [0.5.0] - 2026-07-15
2
+
3
+ ### BREAKING CHANGES
4
+
5
+ - **Drop Ruby 3.2 support**: Minimum required Ruby version is now 3.3+
6
+ - Updated `required_ruby_version` from `>= 3.2.0` to `>= 3.3.0`
7
+ - Removed Ruby 3.2 from CI test matrix
8
+
9
+ ### Changed
10
+
11
+ - **Dependencies**: Updated development and test dependencies (Rails 8.1.3, concurrent-ruby 1.3.7, and security patches for activesupport, erb, and json).
12
+
13
+ ## [0.4.0] - 2026-02-08
14
+
15
+ ### Added
16
+
17
+ - **Dynamic Shortcuts**:
18
+ - Call methods like `user.is_admin?` or `user.is_manager?(org)` directly.
19
+ - Configurable pattern (`config.dynamic_shortcuts_pattern`), defaults to `is_%{role}?`.
20
+ - Custom patterns supported (e.g. `in_%{role}_group?`).
21
+ - **Enhanced Resourceable**:
22
+ - Added `has_many :users, through: :roles` association for direct user access (e.g. `org.users`).
23
+ - Added `users_grouped_by_role` to get a hash of users per role.
24
+ - Added `destroy_role(role_name)` for bulk cleanup on a resource.
25
+ - Added convenience methods/aliases: `users_with_roles`, `applied_roles`.
26
+ - **Generator**:
27
+ - Updated install template to include new configuration options.
2
28
 
3
29
  ## [0.3.3] - 2026-02-07
4
30
 
data/README.md CHANGED
@@ -235,8 +235,14 @@ class Organization < ApplicationRecord
235
235
  end
236
236
 
237
237
  org = Organization.first
238
+ org.users # All users with ANY role (via has_many :through)
238
239
  org.users_with_role(:manager)
239
- org.available_roles # ["manager", "admin"]
240
+ org.users_with_roles # All users with ANY role on this org
241
+ org.available_roles # ["manager", "admin"]
242
+ org.users_grouped_by_role # { "manager" => [user1], "admin" => [user2] }
243
+
244
+ # Cleanup
245
+ org.destroy_role(:manager) # Removes the "manager" role and all its assignments from this org
240
246
 
241
247
  # Scopes
242
248
  Organization.with_role(:manager, user)
@@ -254,9 +260,44 @@ RoleFu.configure do |config|
254
260
 
255
261
  # Enable Rolify-style permissive checks (Global roles override resource checks)
256
262
  config.global_roles_override = true
263
+
264
+ # Enable dynamic shortcuts (e.g. user.is_admin?)
265
+ # Default is nil (disabled). Recommended: "is_%{role}?"
266
+ config.dynamic_shortcuts_pattern = "is_%{role}?"
257
267
  end
258
268
  ```
259
269
 
270
+ ## Dynamic Shortcuts
271
+
272
+ RoleFu supports dynamic methods for quick role checking if you configure a pattern.
273
+
274
+ **Configuration:**
275
+
276
+ ```ruby
277
+ # In config/initializers/role_fu.rb
278
+ RoleFu.configure do |config|
279
+ config.dynamic_shortcuts_pattern = "is_%{role}?"
280
+ end
281
+ ```
282
+
283
+ **Usage:**
284
+
285
+ ```ruby
286
+ user.is_admin? # Equivalent to user.has_role?(:admin)
287
+ user.is_manager?(org) # Equivalent to user.has_role?(:manager, org)
288
+ ```
289
+
290
+ **Custom Pattern:**
291
+
292
+ If you use groups:
293
+
294
+ ```ruby
295
+ config.dynamic_shortcuts_pattern = "in_%{role}_group?"
296
+
297
+ # Usage:
298
+ user.in_admin_group? # Equivalent to user.has_role?(:admin)
299
+ ```
300
+
260
301
  ## Custom Aliases (e.g. Groups)
261
302
 
262
303
  If you prefer different terminology (e.g., "Groups" instead of "Roles"), you can alias the methods in your models:
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- role_fu (0.3.3)
4
+ role_fu (0.5.0)
5
5
  activerecord (>= 7.2)
6
6
 
7
7
  GEM
@@ -87,46 +87,47 @@ GEM
87
87
  ast (2.4.3)
88
88
  base64 (0.3.0)
89
89
  benchmark (0.5.0)
90
- bigdecimal (4.0.1)
90
+ bigdecimal (4.1.2)
91
91
  builder (3.3.0)
92
- cgi (0.5.1)
93
- concurrent-ruby (1.3.6)
92
+ cgi (0.5.2)
93
+ concurrent-ruby (1.3.7)
94
94
  connection_pool (3.0.2)
95
- crass (1.0.6)
95
+ crass (1.0.7)
96
96
  date (3.5.1)
97
97
  diff-lcs (1.6.2)
98
- docile (1.4.1)
99
98
  drb (2.2.3)
100
- erb (6.0.1)
99
+ erb (6.0.4)
101
100
  erubi (1.13.1)
102
- globalid (1.3.0)
101
+ globalid (1.4.0)
103
102
  activesupport (>= 6.1)
104
- i18n (1.14.8)
103
+ i18n (1.15.2)
105
104
  concurrent-ruby (~> 1.0)
106
105
  io-console (0.8.2)
107
- irb (1.16.0)
106
+ irb (1.18.0)
108
107
  pp (>= 0.6.0)
108
+ prism (>= 1.3.0)
109
109
  rdoc (>= 4.0.0)
110
110
  reline (>= 0.4.2)
111
- json (2.18.1)
112
- language_server-protocol (3.17.0.5)
113
- lefthook (2.1.0)
111
+ json (2.21.1)
112
+ language_server-protocol (3.17.0.6)
113
+ lefthook (2.1.10)
114
114
  lint_roller (1.1.0)
115
115
  logger (1.7.0)
116
- loofah (2.25.0)
116
+ loofah (2.25.1)
117
117
  crass (~> 1.0.2)
118
118
  nokogiri (>= 1.12.0)
119
- mail (2.9.0)
119
+ mail (2.9.1)
120
120
  logger
121
121
  mini_mime (>= 0.1.1)
122
122
  net-imap
123
123
  net-pop
124
124
  net-smtp
125
- marcel (1.1.0)
125
+ marcel (1.2.1)
126
126
  mini_mime (1.1.5)
127
- minitest (6.0.1)
127
+ minitest (6.0.6)
128
+ drb (~> 2.0)
128
129
  prism (~> 1.5)
129
- net-imap (0.6.2)
130
+ net-imap (0.6.4.1)
130
131
  date
131
132
  net-protocol
132
133
  net-pop (0.1.2)
@@ -136,36 +137,33 @@ GEM
136
137
  net-smtp (0.5.1)
137
138
  net-protocol
138
139
  nio4r (2.7.5)
139
- nokogiri (1.19.0-aarch64-linux-gnu)
140
+ nokogiri (1.19.4-aarch64-linux-gnu)
140
141
  racc (~> 1.4)
141
- nokogiri (1.19.0-aarch64-linux-musl)
142
+ nokogiri (1.19.4-aarch64-linux-musl)
142
143
  racc (~> 1.4)
143
- nokogiri (1.19.0-arm-linux-gnu)
144
+ nokogiri (1.19.4-arm-linux-gnu)
144
145
  racc (~> 1.4)
145
- nokogiri (1.19.0-arm-linux-musl)
146
+ nokogiri (1.19.4-arm-linux-musl)
146
147
  racc (~> 1.4)
147
- nokogiri (1.19.0-arm64-darwin)
148
+ nokogiri (1.19.4-arm64-darwin)
148
149
  racc (~> 1.4)
149
- nokogiri (1.19.0-x86_64-darwin)
150
+ nokogiri (1.19.4-x86_64-darwin)
150
151
  racc (~> 1.4)
151
- nokogiri (1.19.0-x86_64-linux-gnu)
152
+ nokogiri (1.19.4-x86_64-linux-gnu)
152
153
  racc (~> 1.4)
153
- nokogiri (1.19.0-x86_64-linux-musl)
154
+ nokogiri (1.19.4-x86_64-linux-musl)
154
155
  racc (~> 1.4)
155
- parallel (1.27.0)
156
- parser (3.3.10.1)
156
+ parallel (2.1.0)
157
+ parser (3.3.11.1)
157
158
  ast (~> 2.4.1)
158
159
  racc
159
- pp (0.6.3)
160
+ pp (0.6.4)
160
161
  prettyprint
161
162
  prettyprint (0.2.0)
162
163
  prism (1.9.0)
163
- psych (5.3.1)
164
- date
165
- stringio
166
164
  racc (1.8.1)
167
- rack (3.2.4)
168
- rack-session (2.1.1)
165
+ rack (3.2.6)
166
+ rack-session (2.1.2)
169
167
  base64 (>= 0.1.0)
170
168
  rack (>= 3.0.0)
171
169
  rack-test (2.2.0)
@@ -190,8 +188,8 @@ GEM
190
188
  activesupport (>= 5.0.0)
191
189
  minitest
192
190
  nokogiri (>= 1.6)
193
- rails-html-sanitizer (1.6.2)
194
- loofah (~> 2.21)
191
+ rails-html-sanitizer (1.7.0)
192
+ loofah (~> 2.25)
195
193
  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)
196
194
  railties (7.2.3)
197
195
  actionpack (= 7.2.3)
@@ -204,12 +202,17 @@ GEM
204
202
  tsort (>= 0.2)
205
203
  zeitwerk (~> 2.6)
206
204
  rainbow (3.1.1)
207
- rake (13.3.1)
208
- rdoc (7.1.0)
205
+ rake (13.4.2)
206
+ rbs (4.0.3)
207
+ logger
208
+ prism (>= 1.6.0)
209
+ tsort
210
+ rdoc (8.0.0)
209
211
  erb
210
- psych (>= 4.0.0)
212
+ prism (>= 1.6.0)
213
+ rbs (>= 4.0.0)
211
214
  tsort
212
- regexp_parser (2.11.3)
215
+ regexp_parser (2.12.0)
213
216
  reline (0.6.3)
214
217
  io-console (~> 0.5)
215
218
  rspec (3.13.2)
@@ -221,51 +224,47 @@ GEM
221
224
  rspec-expectations (3.13.5)
222
225
  diff-lcs (>= 1.2.0, < 2.0)
223
226
  rspec-support (~> 3.13.0)
224
- rspec-mocks (3.13.7)
227
+ rspec-mocks (3.13.8)
225
228
  diff-lcs (>= 1.2.0, < 2.0)
226
229
  rspec-support (~> 3.13.0)
227
230
  rspec-support (3.13.7)
228
- rubocop (1.82.1)
231
+ rubocop (1.87.0)
229
232
  json (~> 2.3)
230
233
  language_server-protocol (~> 3.17.0.2)
231
234
  lint_roller (~> 1.1.0)
232
- parallel (~> 1.10)
235
+ parallel (>= 1.10)
233
236
  parser (>= 3.3.0.2)
234
237
  rainbow (>= 2.2.2, < 4.0)
235
238
  regexp_parser (>= 2.9.3, < 3.0)
236
- rubocop-ast (>= 1.48.0, < 2.0)
239
+ rubocop-ast (>= 1.49.0, < 2.0)
237
240
  ruby-progressbar (~> 1.7)
238
241
  unicode-display_width (>= 2.4.0, < 4.0)
239
- rubocop-ast (1.49.0)
242
+ rubocop-ast (1.50.0)
240
243
  parser (>= 3.3.7.2)
241
244
  prism (~> 1.7)
242
245
  rubocop-performance (1.26.1)
243
246
  lint_roller (~> 1.1)
244
247
  rubocop (>= 1.75.0, < 2.0)
245
248
  rubocop-ast (>= 1.47.1, < 2.0)
246
- rubocop-rspec (3.9.0)
249
+ rubocop-rspec (3.10.2)
247
250
  lint_roller (~> 1.1)
248
- rubocop (~> 1.81)
251
+ regexp_parser (>= 2.0)
252
+ rubocop (~> 1.86, >= 1.86.2)
249
253
  ruby-progressbar (1.13.0)
250
254
  securerandom (0.4.1)
251
- simplecov (0.22.0)
252
- docile (~> 1.1)
253
- simplecov-html (~> 0.11)
254
- simplecov_json_formatter (~> 0.1)
255
- simplecov-html (0.13.2)
256
- simplecov_json_formatter (0.1.4)
257
- sqlite3 (2.9.0-aarch64-linux-gnu)
258
- sqlite3 (2.9.0-aarch64-linux-musl)
259
- sqlite3 (2.9.0-arm-linux-gnu)
260
- sqlite3 (2.9.0-arm-linux-musl)
261
- sqlite3 (2.9.0-arm64-darwin)
262
- sqlite3 (2.9.0-x86_64-darwin)
263
- sqlite3 (2.9.0-x86_64-linux-gnu)
264
- sqlite3 (2.9.0-x86_64-linux-musl)
265
- standard (1.53.0)
255
+ simplecov (1.0.1)
256
+ sqlite3 (2.9.5-aarch64-linux-gnu)
257
+ sqlite3 (2.9.5-aarch64-linux-musl)
258
+ sqlite3 (2.9.5-arm-linux-gnu)
259
+ sqlite3 (2.9.5-arm-linux-musl)
260
+ sqlite3 (2.9.5-arm64-darwin)
261
+ sqlite3 (2.9.5-x86_64-darwin)
262
+ sqlite3 (2.9.5-x86_64-linux-gnu)
263
+ sqlite3 (2.9.5-x86_64-linux-musl)
264
+ standard (1.55.0)
266
265
  language_server-protocol (~> 3.17.0.2)
267
266
  lint_roller (~> 1.0)
268
- rubocop (~> 1.82.0)
267
+ rubocop (~> 1.87.0)
269
268
  standard-custom (~> 1.0.0)
270
269
  standard-performance (~> 1.8)
271
270
  standard-custom (1.0.2)
@@ -274,9 +273,8 @@ GEM
274
273
  standard-performance (1.9.0)
275
274
  lint_roller (~> 1.1)
276
275
  rubocop-performance (~> 1.26.0)
277
- stringio (3.2.0)
278
276
  thor (1.5.0)
279
- timeout (0.6.0)
277
+ timeout (0.6.1)
280
278
  tsort (0.2.0)
281
279
  tzinfo (2.0.6)
282
280
  concurrent-ruby (~> 1.0)
@@ -284,11 +282,11 @@ GEM
284
282
  unicode-emoji (~> 4.1)
285
283
  unicode-emoji (4.2.0)
286
284
  useragent (0.16.11)
287
- websocket-driver (0.8.0)
285
+ websocket-driver (0.8.2)
288
286
  base64
289
287
  websocket-extensions (>= 0.1.0)
290
288
  websocket-extensions (0.1.5)
291
- zeitwerk (2.7.4)
289
+ zeitwerk (2.8.2)
292
290
 
293
291
  PLATFORMS
294
292
  aarch64-linux-gnu
@@ -330,102 +328,98 @@ CHECKSUMS
330
328
  ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
331
329
  base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
332
330
  benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c
333
- bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
331
+ bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
334
332
  builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
335
- cgi (0.5.1) sha256=e93fcafc69b8a934fe1e6146121fa35430efa8b4a4047c4893764067036f18e9
336
- concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
333
+ cgi (0.5.2) sha256=61ca30298171190fd4fa0d8018e57ada456eae9b7a2b78526debf7f0a0e6f8bb
334
+ concurrent-ruby (1.3.7) sha256=4412caec3a5ea2e5fdc52076724c071a81f2c0593d83b2ac8cbb8ca63b3151b0
337
335
  connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
338
- crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d
336
+ crass (1.0.7) sha256=94868719948664c89ddcaf0a37c65048413dfcb1c869470a5f7a7ceb5390b295
339
337
  date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
340
338
  diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
341
- docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
342
339
  drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
343
- erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
340
+ erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9
344
341
  erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
345
- globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11
346
- i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
342
+ globalid (1.4.0) sha256=037f12fbf1d9d7a014d501c2d5c77356fd4ddd96d7a7991d6700bba96706f427
343
+ i18n (1.15.2) sha256=00f9eb62412fe593b2a65a97daa75300d37abb8f7202ec748e94b6d46a9dd1b5
347
344
  io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
348
- irb (1.16.0) sha256=2abe56c9ac947cdcb2f150572904ba798c1e93c890c256f8429981a7675b0806
349
- json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
350
- language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
351
- lefthook (2.1.0) sha256=a100dc90139806e62b9aa40cf32e9edf34f6cff10c8b55ebd14a1b0add4b86bf
345
+ irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3
346
+ json (2.21.1) sha256=13a43df75d95641443f5702dff350f237164a9d811ff0f2c2800d4d980220583
347
+ language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0
348
+ lefthook (2.1.10) sha256=cc9c06bd8ea689e8b8016eab9769e54d696d07951860c1c6d28e8f6812e61b65
352
349
  lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
353
350
  logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
354
- loofah (2.25.0) sha256=df5ed7ac3bac6a4ec802df3877ee5cc86d027299f8952e6243b3dac446b060e6
355
- mail (2.9.0) sha256=6fa6673ecd71c60c2d996260f9ee3dd387d4673b8169b502134659ece6d34941
356
- marcel (1.1.0) sha256=fdcfcfa33cc52e93c4308d40e4090a5d4ea279e160a7f6af988260fa970e0bee
351
+ loofah (2.25.1) sha256=d436c73dbd0c1147b16c4a41db097942d217303e1f7728704b37e4df9f6d2e04
352
+ mail (2.9.1) sha256=06574eca475253d6c18145dd70af80d0eb970182d55053497c5f4d797ea160e8
353
+ marcel (1.2.1) sha256=1678e9360e32f9eafa917c80029e2f6d10b2715c66a4b87b6d0da9b9cd1f859f
357
354
  mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
358
- minitest (6.0.1) sha256=7854c74f48e2e975969062833adc4013f249a4b212f5e7b9d5c040bf838d54bb
359
- net-imap (0.6.2) sha256=08caacad486853c61676cca0c0c47df93db02abc4a8239a8b67eb0981428acc6
355
+ minitest (6.0.6) sha256=153ea36d1d987a62942382b61075745042a2b3123b1cd48f4c3675af9cc7d6f1
356
+ net-imap (0.6.4.1) sha256=29f0360d75a7efd3539f16ac1957dea5c0a51ddeceb348db4553c3120914ea0d
360
357
  net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3
361
358
  net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8
362
359
  net-smtp (0.5.1) sha256=ed96a0af63c524fceb4b29b0d352195c30d82dd916a42f03c62a3a70e5b70736
363
360
  nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
364
- nokogiri (1.19.0-aarch64-linux-gnu) sha256=11a97ecc3c0e7e5edcf395720b10860ef493b768f6aa80c539573530bc933767
365
- nokogiri (1.19.0-aarch64-linux-musl) sha256=eb70507f5e01bc23dad9b8dbec2b36ad0e61d227b42d292835020ff754fb7ba9
366
- nokogiri (1.19.0-arm-linux-gnu) sha256=572a259026b2c8b7c161fdb6469fa2d0edd2b61cd599db4bbda93289abefbfe5
367
- nokogiri (1.19.0-arm-linux-musl) sha256=23ed90922f1a38aed555d3de4d058e90850c731c5b756d191b3dc8055948e73c
368
- nokogiri (1.19.0-arm64-darwin) sha256=0811dfd936d5f6dd3f6d32ef790568bf29b2b7bead9ba68866847b33c9cf5810
369
- nokogiri (1.19.0-x86_64-darwin) sha256=1dad56220b603a8edb9750cd95798bffa2b8dd9dd9aa47f664009ee5b43e3067
370
- nokogiri (1.19.0-x86_64-linux-gnu) sha256=f482b95c713d60031d48c44ce14562f8d2ce31e3a9e8dd0ccb131e9e5a68b58c
371
- nokogiri (1.19.0-x86_64-linux-musl) sha256=1c4ca6b381622420073ce6043443af1d321e8ed93cc18b08e2666e5bd02ffae4
372
- parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
373
- parser (3.3.10.1) sha256=06f6a725d2cd91e5e7f2b7c32ba143631e1f7c8ae2fb918fc4cebec187e6a688
374
- pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6
361
+ nokogiri (1.19.4-aarch64-linux-gnu) sha256=1269fb644a6de405057a53dd5c762b1209b43ca7424f839454d3dbc677c31a8f
362
+ nokogiri (1.19.4-aarch64-linux-musl) sha256=35c65b9ce72b3bb03207bdbe7067915019dc18c1b9b59139684bd6690fdd01af
363
+ nokogiri (1.19.4-arm-linux-gnu) sha256=a301313e38bb065d68239e79734bcd6f56fb6efaacebde29e9abf2a4735340ca
364
+ nokogiri (1.19.4-arm-linux-musl) sha256=588923c101bcfa78869734d247d25b598674323e7f22474fc468f6e5647311eb
365
+ nokogiri (1.19.4-arm64-darwin) sha256=a46db9853286e6597b36ebc6953817d15acf3a299583eb3f89fdc6f91dd63527
366
+ nokogiri (1.19.4-x86_64-darwin) sha256=7fd17057d3e1f00e9954a74b3cd76595d3d4a5ef233b7ed9599047c204f70551
367
+ nokogiri (1.19.4-x86_64-linux-gnu) sha256=379fae440b28915e3f19d752ce2dcf8465ed2b2fbefd2a7ca0dd497bc981a06a
368
+ nokogiri (1.19.4-x86_64-linux-musl) sha256=17dfb7c1fa194ae02fbf7c51a7afc8d278045ab3fdacfd86f91d02d7b274470b
369
+ parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356
370
+ parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54
371
+ pp (0.6.4) sha256=dfcb0fce700c41456265922884f9fe195d7fbb0674a3578e6c0f69588e82b570
375
372
  prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
376
373
  prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
377
- psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974
378
374
  racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
379
- rack (3.2.4) sha256=5d74b6f75082a643f43c1e76b419c40f0e5527fcfee1e669ac1e6b73c0ccb6f6
380
- rack-session (2.1.1) sha256=0b6dc07dea7e4b583f58a48e8b806d4c9f1c6c9214ebc202ec94562cbea2e4e9
375
+ rack (3.2.6) sha256=5ed78e1f73b2e25679bec7d45ee2d4483cc4146eb1be0264fc4d94cb5ef212c2
376
+ rack-session (2.1.2) sha256=595434f8c0c3473ae7d7ac56ecda6cc6dfd9d37c0b2b5255330aa1576967ffe8
381
377
  rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
382
378
  rackup (2.3.1) sha256=6c79c26753778e90983761d677a48937ee3192b3ffef6bc963c0950f94688868
383
379
  rails (7.2.3) sha256=9a9812eb131189676e64665f6883fc9c4051f412cc87ef9e3fa242a09c609bff
384
380
  rails-dom-testing (2.3.0) sha256=8acc7953a7b911ca44588bf08737bc16719f431a1cc3091a292bca7317925c1d
385
- rails-html-sanitizer (1.6.2) sha256=35fce2ca8242da8775c83b6ba9c1bcaad6751d9eb73c1abaa8403475ab89a560
381
+ rails-html-sanitizer (1.7.0) sha256=28b145cceaf9cc214a9874feaa183c3acba036c9592b19886e0e45efc62b1e89
386
382
  railties (7.2.3) sha256=6eb010a6bfe6f223e783f739ddfcbdb5b88b1f3a87f7739f0a0685e466250422
387
383
  rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
388
- rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
389
- rdoc (7.1.0) sha256=494899df0706c178596ca6e1d50f1b7eb285a9b2aae715be5abd742734f17363
390
- regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
384
+ rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
385
+ rbs (4.0.3) sha256=5a7bf70e2628549d9a1f44eae447b2cfe55968a9c60cfff52693a4bdcc020e14
386
+ rdoc (8.0.0) sha256=03bf8c08a9639658855a0cfd77c0abca8325c227693f7f33f82957811348c469
387
+ regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
391
388
  reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
392
- role_fu (0.3.3)
389
+ role_fu (0.5.0)
393
390
  rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
394
391
  rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
395
392
  rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
396
- rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c
393
+ rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
397
394
  rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
398
- rubocop (1.82.1) sha256=09f1a6a654a960eda767aebea33e47603080f8e9c9a3f019bf9b94c9cab5e273
399
- rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd
395
+ rubocop (1.87.0) sha256=b9d9ddf55116a513f8ef2c7ae660662d8b49301f118d3f0df61865b33a5c188d
396
+ rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db
400
397
  rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
401
- rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2
398
+ rubocop-rspec (3.10.2) sha256=0b3e2ecc592cd10ecbf0095bb58d1e357905276e069643523cc19eb7495f65e2
402
399
  ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
403
400
  securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
404
- simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
405
- simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
406
- simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
407
- sqlite3 (2.9.0-aarch64-linux-gnu) sha256=cfe1e0216f46d7483839719bf827129151e6c680317b99d7b8fc1597a3e13473
408
- sqlite3 (2.9.0-aarch64-linux-musl) sha256=56a35cb2d70779afc2ac191baf2c2148242285ecfed72f9b021218c5c4917913
409
- sqlite3 (2.9.0-arm-linux-gnu) sha256=a19a21504b0d7c8c825fbbf37b358ae316b6bd0d0134c619874060b2eef05435
410
- sqlite3 (2.9.0-arm-linux-musl) sha256=fca5b26197c70e3363115d3faaea34d7b2ad9c7f5fa8d8312e31b64e7556ee07
411
- sqlite3 (2.9.0-arm64-darwin) sha256=a917bd9b84285766ff3300b7d79cd583f5a067594c8c1263e6441618c04a6ed3
412
- sqlite3 (2.9.0-x86_64-darwin) sha256=59fe51baa3cb33c36d27ce78b4ed9360cd33ccca09498c2ae63850c97c0a6026
413
- sqlite3 (2.9.0-x86_64-linux-gnu) sha256=72fff9bd750070ba3af695511ba5f0e0a2d8a9206f84869640b3e99dfaf3d5a5
414
- sqlite3 (2.9.0-x86_64-linux-musl) sha256=ef716ba7a66d7deb1ccc402ac3a6d7343da17fac862793b7f0be3d2917253c90
415
- standard (1.53.0) sha256=f3c9493385db7079d0abce6f7582f553122156997b81258cd361d3480eeacf9c
401
+ simplecov (1.0.1) sha256=419d93c40484159d20b40e26e9a83cdd4c3afa2f3fd443bb8946c301cd658d75
402
+ sqlite3 (2.9.5-aarch64-linux-gnu) sha256=78075b6337d3d182c6d2b4691049ed45cd220826160c9ea18946bf6a1de200dc
403
+ sqlite3 (2.9.5-aarch64-linux-musl) sha256=18c801185deb4adc01ddb281e8f672a39e3d1729979ca91e39439cd3eac0402d
404
+ sqlite3 (2.9.5-arm-linux-gnu) sha256=1bdfca0c7d63998c60b0f4a8e3c8df2d33800ccc4abd2d612eddbbbc92a4c48b
405
+ sqlite3 (2.9.5-arm-linux-musl) sha256=bae1109d12b2e9f588455967729b008e1ff4feb7761749df695019c9079913c6
406
+ sqlite3 (2.9.5-arm64-darwin) sha256=d0cf444a70fc9395d513cfbcc1e6719e224aa645314e3824cb0474c721425aa2
407
+ sqlite3 (2.9.5-x86_64-darwin) sha256=8e9caae38bd7ebb29cbeee3e7ab1d12dc2327d9a1b92c7fcf0dda05589627a81
408
+ sqlite3 (2.9.5-x86_64-linux-gnu) sha256=233dbcb6714148dd23bc5aeb33e8efd6eac974969564ddd5794c23d5f52b231e
409
+ sqlite3 (2.9.5-x86_64-linux-musl) sha256=e7d3a7474e8af0f96150c21abc203fbab5437206bfcdf11deab7741c0ca516f2
410
+ standard (1.55.0) sha256=8a8f2c3e681a4db3aafde1b301561b0f3d7c5f06c160167cb744a4d7baf0426e
416
411
  standard-custom (1.0.2) sha256=424adc84179a074f1a2a309bb9cf7cd6bfdb2b6541f20c6bf9436c0ba22a652b
417
412
  standard-performance (1.9.0) sha256=49483d31be448292951d80e5e67cdcb576c2502103c7b40aec6f1b6e9c88e3f2
418
- stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1
419
413
  thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
420
- timeout (0.6.0) sha256=6d722ad619f96ee383a0c557ec6eb8c4ecb08af3af62098a0be5057bf00de1af
414
+ timeout (0.6.1) sha256=78f57368a7e7bbadec56971f78a3f5ecbcfb59b7fcbb0a3ed6ddc08a5094accb
421
415
  tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
422
416
  tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
423
417
  unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
424
418
  unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
425
419
  useragent (0.16.11) sha256=700e6413ad4bb954bb63547fa098dddf7b0ebe75b40cc6f93b8d54255b173844
426
- websocket-driver (0.8.0) sha256=ed0dba4b943c22f17f9a734817e808bc84cdce6a7e22045f5315aa57676d4962
420
+ websocket-driver (0.8.2) sha256=97c556b019bf3410b4961002ac501621e9322d3f8a7bc02161a09301cc4c4146
427
421
  websocket-extensions (0.1.5) sha256=1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241
428
- zeitwerk (2.7.4) sha256=2bef90f356bdafe9a6c2bd32bcd804f83a4f9b8bc27f3600fff051eb3edcec8b
422
+ zeitwerk (2.8.2) sha256=7212a61311083c604184b1ea2574b9aa05cd14f855a0841c06985cabe9181d12
429
423
 
430
424
  BUNDLED WITH
431
425
  4.0.5