trusty-cms 7.2 → 8.1.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: 2378bbe6b853e3290648de1a8a832b61a25303f3078f4903ac70581a031bb3a5
4
- data.tar.gz: 3e704c6349a8bf385190cc70ee6cf0021aa8c0cc575d5e033a3c1423a32e5e20
3
+ metadata.gz: '09a975dbfdff3498fab3bcc60a600da1b0da0a5f0129f0d70df7b9db6bb1b1cc'
4
+ data.tar.gz: f6be37f3b4528ec731cf84640a125b7ef01bc9ab62e075f0f4a2c6a049723fd1
5
5
  SHA512:
6
- metadata.gz: b4c137e5c84e08a9fc8395282986fe8a7b8b0c7c28d6e3b888b60a4e8a0c19f30d1520bc92a5580c8a3472961470e57558215ff3965546626dbb934863cd9f07
7
- data.tar.gz: 42f087dbc0e78b43ffb48ad804b891992eafafe7d8e3ee5589b2d983902eaef2590f5325bb03f1df568227e52ae4a391d7ca8000432e9be82f59710c332f34b4
6
+ metadata.gz: 023a11dd1d3377191a5f4bdb80490b452a8c789f89a637c90f96163e11a2a5b9f283b59e08cbd7fea89a656fd1523194a2dd85a08e41b757bfbd1e06aca96181
7
+ data.tar.gz: 3f0bd848d25abc30b4dffc21f3d504ff187710bf460e7fd902071f1fe81100a905689f2ad6eacd7135313052ac0d3265d9ee5835a6db10eed4024a2c7db140bb
data/Gemfile CHANGED
@@ -19,9 +19,9 @@ group :development, :test do
19
19
  gem 'factory_bot_rails', '6.5.1'
20
20
  gem 'file_validators'
21
21
  gem 'jsbundling-rails', '~> 1.3'
22
- gem 'launchy', '~> 3.0.1'
22
+ gem 'launchy', '~> 3.1.1'
23
23
  gem 'mysql2'
24
- gem 'paper_trail', '~> 16.0.0'
24
+ gem 'paper_trail', '~> 17.0.0'
25
25
  gem 'paper_trail-association_tracking', '~> 2.3.0'
26
26
  gem 'poltergeist', '~> 1.18.1'
27
27
  gem 'pry-byebug'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- trusty-cms (7.2)
4
+ trusty-cms (8.1.0)
5
5
  RedCloth (= 4.3.4)
6
6
  activestorage-validator
7
7
  acts_as_list (>= 0.9.5, < 1.3.0)
@@ -15,21 +15,22 @@ PATH
15
15
  diffy
16
16
  drb
17
17
  execjs (~> 2.7)
18
- haml (~> 6.3.0)
19
- haml-rails (~> 2.1)
18
+ haml (>= 6.3, < 7.4)
19
+ haml-rails (>= 2.1, < 4.0)
20
20
  highline (>= 1.7.8, < 3.2.0)
21
21
  image_processing
22
22
  kraken-io
23
+ mini_magick (~> 5.0)
23
24
  mini_racer
24
25
  mutex_m
25
26
  mysql2
26
- paper_trail (~> 16.0.0)
27
+ paper_trail (~> 17.0.0)
27
28
  paper_trail-association_tracking (>= 2.2.1, < 2.4.0)
28
29
  psych (= 5.4.0)
29
30
  rack (>= 2.0.1, < 3.2.0)
30
31
  rack-cache (~> 1.7)
31
32
  radius (~> 0.8)
32
- rails (>= 7.2, < 8.0)
33
+ rails (~> 8.1.0)
33
34
  rake (< 14.0)
34
35
  ransack (~> 4.2.1)
35
36
  rdoc (>= 5.1, < 9.0)
@@ -46,81 +47,82 @@ GEM
46
47
  remote: https://rubygems.org/
47
48
  specs:
48
49
  RedCloth (4.3.4)
49
- actioncable (7.2.3.2)
50
- actionpack (= 7.2.3.2)
51
- activesupport (= 7.2.3.2)
50
+ action_text-trix (2.1.19)
51
+ railties
52
+ actioncable (8.1.3.1)
53
+ actionpack (= 8.1.3.1)
54
+ activesupport (= 8.1.3.1)
52
55
  nio4r (~> 2.0)
53
56
  websocket-driver (>= 0.6.1)
54
57
  zeitwerk (~> 2.6)
55
- actionmailbox (7.2.3.2)
56
- actionpack (= 7.2.3.2)
57
- activejob (= 7.2.3.2)
58
- activerecord (= 7.2.3.2)
59
- activestorage (= 7.2.3.2)
60
- activesupport (= 7.2.3.2)
58
+ actionmailbox (8.1.3.1)
59
+ actionpack (= 8.1.3.1)
60
+ activejob (= 8.1.3.1)
61
+ activerecord (= 8.1.3.1)
62
+ activestorage (= 8.1.3.1)
63
+ activesupport (= 8.1.3.1)
61
64
  mail (>= 2.8.0)
62
- actionmailer (7.2.3.2)
63
- actionpack (= 7.2.3.2)
64
- actionview (= 7.2.3.2)
65
- activejob (= 7.2.3.2)
66
- activesupport (= 7.2.3.2)
65
+ actionmailer (8.1.3.1)
66
+ actionpack (= 8.1.3.1)
67
+ actionview (= 8.1.3.1)
68
+ activejob (= 8.1.3.1)
69
+ activesupport (= 8.1.3.1)
67
70
  mail (>= 2.8.0)
68
71
  rails-dom-testing (~> 2.2)
69
- actionpack (7.2.3.2)
70
- actionview (= 7.2.3.2)
71
- activesupport (= 7.2.3.2)
72
- cgi
72
+ actionpack (8.1.3.1)
73
+ actionview (= 8.1.3.1)
74
+ activesupport (= 8.1.3.1)
73
75
  nokogiri (>= 1.8.5)
74
- racc
75
- rack (>= 2.2.4, < 3.3)
76
+ rack (>= 2.2.4)
76
77
  rack-session (>= 1.0.1)
77
78
  rack-test (>= 0.6.3)
78
79
  rails-dom-testing (~> 2.2)
79
80
  rails-html-sanitizer (~> 1.6)
80
81
  useragent (~> 0.16)
81
- actiontext (7.2.3.2)
82
- actionpack (= 7.2.3.2)
83
- activerecord (= 7.2.3.2)
84
- activestorage (= 7.2.3.2)
85
- activesupport (= 7.2.3.2)
82
+ actiontext (8.1.3.1)
83
+ action_text-trix (~> 2.1.15)
84
+ actionpack (= 8.1.3.1)
85
+ activerecord (= 8.1.3.1)
86
+ activestorage (= 8.1.3.1)
87
+ activesupport (= 8.1.3.1)
86
88
  globalid (>= 0.6.0)
87
89
  nokogiri (>= 1.8.5)
88
- actionview (7.2.3.2)
89
- activesupport (= 7.2.3.2)
90
+ actionview (8.1.3.1)
91
+ activesupport (= 8.1.3.1)
90
92
  builder (~> 3.1)
91
- cgi
92
93
  erubi (~> 1.11)
93
94
  rails-dom-testing (~> 2.2)
94
95
  rails-html-sanitizer (~> 1.6)
95
- activejob (7.2.3.2)
96
- activesupport (= 7.2.3.2)
96
+ activejob (8.1.3.1)
97
+ activesupport (= 8.1.3.1)
97
98
  globalid (>= 0.3.6)
98
- activemodel (7.2.3.2)
99
- activesupport (= 7.2.3.2)
100
- activerecord (7.2.3.2)
101
- activemodel (= 7.2.3.2)
102
- activesupport (= 7.2.3.2)
99
+ activemodel (8.1.3.1)
100
+ activesupport (= 8.1.3.1)
101
+ activerecord (8.1.3.1)
102
+ activemodel (= 8.1.3.1)
103
+ activesupport (= 8.1.3.1)
103
104
  timeout (>= 0.4.0)
104
- activestorage (7.2.3.2)
105
- actionpack (= 7.2.3.2)
106
- activejob (= 7.2.3.2)
107
- activerecord (= 7.2.3.2)
108
- activesupport (= 7.2.3.2)
105
+ activestorage (8.1.3.1)
106
+ actionpack (= 8.1.3.1)
107
+ activejob (= 8.1.3.1)
108
+ activerecord (= 8.1.3.1)
109
+ activesupport (= 8.1.3.1)
109
110
  marcel (~> 1.0)
110
- activestorage-validator (0.4.0)
111
- rails (>= 6.1.0)
112
- activesupport (7.2.3.2)
111
+ activestorage-validator (0.8.0)
112
+ rails (>= 7.2.0)
113
+ activesupport (8.1.3.1)
113
114
  base64
114
- benchmark (>= 0.3)
115
115
  bigdecimal
116
116
  concurrent-ruby (~> 1.0, >= 1.3.1)
117
117
  connection_pool (>= 2.2.5)
118
118
  drb
119
119
  i18n (>= 1.6, < 2)
120
+ json
120
121
  logger (>= 1.4.2)
121
- minitest (>= 5.1, < 6)
122
+ minitest (>= 5.1)
122
123
  securerandom (>= 0.3)
123
124
  tzinfo (~> 2.0, >= 2.0.5)
125
+ uri (>= 0.13.1)
124
126
  acts_as_list (1.2.6)
125
127
  activerecord (>= 6.1)
126
128
  activesupport (>= 6.1)
@@ -130,7 +132,6 @@ GEM
130
132
  public_suffix (>= 2.0.2, < 8.0)
131
133
  base64 (0.3.0)
132
134
  bcrypt (3.1.22)
133
- benchmark (0.5.0)
134
135
  bigdecimal (4.1.2)
135
136
  builder (3.3.0)
136
137
  byebug (13.0.0)
@@ -144,7 +145,6 @@ GEM
144
145
  rack-test (>= 0.6.3)
145
146
  regexp_parser (>= 1.5, < 3.0)
146
147
  xpath (~> 3.2)
147
- cgi (0.5.2)
148
148
  childprocess (5.1.0)
149
149
  logger (~> 1.5)
150
150
  chunky_png (1.4.0)
@@ -158,13 +158,13 @@ GEM
158
158
  ssrf_filter (~> 1.5)
159
159
  csso-rails (0.9.0)
160
160
  execjs (>= 1)
161
- csv (3.3.0)
161
+ csv (3.3.6)
162
162
  database_cleaner (2.1.0)
163
163
  database_cleaner-active_record (>= 2, < 3)
164
- database_cleaner-active_record (2.2.0)
164
+ database_cleaner-active_record (2.2.2)
165
165
  activerecord (>= 5.a)
166
- database_cleaner-core (~> 2.0.0)
167
- database_cleaner-core (2.0.1)
166
+ database_cleaner-core (~> 2.0)
167
+ database_cleaner-core (2.1.0)
168
168
  date (3.5.1)
169
169
  delocalize (1.2.0)
170
170
  rails (>= 2)
@@ -181,52 +181,50 @@ GEM
181
181
  rotp (~> 6.0)
182
182
  diff-lcs (1.6.2)
183
183
  diffy (3.4.4)
184
- docile (1.4.1)
185
184
  drb (2.2.3)
186
- erb (6.0.6)
185
+ erb (6.0.7)
187
186
  erubi (1.13.1)
188
- execjs (2.10.0)
187
+ execjs (2.10.1)
189
188
  factory_bot (6.6.0)
190
189
  activesupport (>= 6.1.0)
191
190
  factory_bot_rails (6.5.1)
192
191
  factory_bot (~> 6.5)
193
192
  railties (>= 6.1.0)
194
- ffi (1.17.0-aarch64-linux-gnu)
195
- ffi (1.17.0-aarch64-linux-musl)
196
- ffi (1.17.0-arm-linux-gnu)
197
- ffi (1.17.0-arm-linux-musl)
198
- ffi (1.17.0-arm64-darwin)
199
- ffi (1.17.0-x86-linux-gnu)
200
- ffi (1.17.0-x86-linux-musl)
201
- ffi (1.17.0-x86_64-darwin)
202
- ffi (1.17.0-x86_64-linux-gnu)
203
- ffi (1.17.0-x86_64-linux-musl)
193
+ ffi (1.17.4-aarch64-linux-gnu)
194
+ ffi (1.17.4-aarch64-linux-musl)
195
+ ffi (1.17.4-arm-linux-gnu)
196
+ ffi (1.17.4-arm-linux-musl)
197
+ ffi (1.17.4-arm64-darwin)
198
+ ffi (1.17.4-x86-linux-gnu)
199
+ ffi (1.17.4-x86-linux-musl)
200
+ ffi (1.17.4-x86_64-darwin)
201
+ ffi (1.17.4-x86_64-linux-gnu)
202
+ ffi (1.17.4-x86_64-linux-musl)
204
203
  file_validators (3.0.0)
205
204
  activemodel (>= 3.2)
206
205
  mime-types (>= 1.0)
207
206
  globalid (1.4.0)
208
207
  activesupport (>= 6.1)
209
- haml (6.3.0)
208
+ haml (7.3.0)
209
+ prism (>= 1.1.0)
210
210
  temple (>= 0.8.2)
211
211
  thor
212
212
  tilt
213
- haml-rails (2.1.0)
213
+ haml-rails (3.1.0)
214
214
  actionpack (>= 5.1)
215
215
  activesupport (>= 5.1)
216
216
  haml (>= 4.0.6)
217
217
  railties (>= 5.1)
218
218
  highline (3.1.2)
219
219
  reline
220
- httparty (0.22.0)
220
+ httparty (0.24.2)
221
221
  csv
222
222
  mini_mime (>= 1.0.0)
223
223
  multi_xml (>= 0.5.2)
224
224
  i18n (1.15.2)
225
225
  concurrent-ruby (~> 1.0)
226
- image_processing (1.13.0)
227
- mini_magick (>= 4.9.5, < 5)
228
- ruby-vips (>= 2.0.17, < 3)
229
- io-console (0.8.2)
226
+ image_processing (2.0.2)
227
+ io-console (0.9.2)
230
228
  irb (1.18.0)
231
229
  pp (>= 0.6.0)
232
230
  prism (>= 1.3.0)
@@ -234,22 +232,23 @@ GEM
234
232
  reline (>= 0.4.2)
235
233
  jsbundling-rails (1.3.1)
236
234
  railties (>= 6.0.0)
237
- json (2.8.1)
235
+ json (2.21.2)
238
236
  kraken-io (0.1.3)
239
237
  activesupport
240
238
  httparty
241
239
  json
242
240
  multipart-post
243
- launchy (3.0.1)
241
+ launchy (3.1.1)
244
242
  addressable (~> 2.8)
245
243
  childprocess (~> 5.0)
246
- libv8-node (18.19.0.0)
247
- libv8-node (18.19.0.0-aarch64-linux)
248
- libv8-node (18.19.0.0-aarch64-linux-musl)
249
- libv8-node (18.19.0.0-arm64-darwin)
250
- libv8-node (18.19.0.0-x86_64-darwin)
251
- libv8-node (18.19.0.0-x86_64-linux)
252
- libv8-node (18.19.0.0-x86_64-linux-musl)
244
+ logger (~> 1.6)
245
+ libv8-node (24.12.0.1)
246
+ libv8-node (24.12.0.1-aarch64-linux)
247
+ libv8-node (24.12.0.1-aarch64-linux-musl)
248
+ libv8-node (24.12.0.1-arm64-darwin)
249
+ libv8-node (24.12.0.1-x86_64-darwin)
250
+ libv8-node (24.12.0.1-x86_64-linux)
251
+ libv8-node (24.12.0.1-x86_64-linux-musl)
253
252
  logger (1.7.0)
254
253
  loofah (2.25.2)
255
254
  crass (~> 1.0.2)
@@ -261,23 +260,27 @@ GEM
261
260
  net-pop
262
261
  net-smtp
263
262
  marcel (1.2.1)
264
- matrix (0.4.2)
263
+ matrix (0.4.3)
265
264
  method_source (1.1.0)
266
- mime-types (3.6.0)
265
+ mime-types (3.7.0)
266
+ logger
267
+ mime-types-data (~> 3.2025, >= 3.2025.0507)
268
+ mime-types-data (3.2026.0701)
269
+ mini_magick (5.3.2)
267
270
  logger
268
- mime-types-data (~> 3.2015)
269
- mime-types-data (3.2024.1105)
270
- mini_magick (4.13.2)
271
271
  mini_mime (1.1.5)
272
272
  mini_portile2 (2.8.9)
273
- mini_racer (0.16.0)
274
- libv8-node (~> 18.19.0.0)
275
- minitest (5.27.0)
273
+ mini_racer (0.21.4)
274
+ libv8-node (~> 24.12.0.1)
275
+ minitest (6.0.6)
276
+ drb (~> 2.0)
277
+ prism (~> 1.5)
276
278
  multi_xml (0.9.1)
277
279
  bigdecimal (>= 3.1, < 5)
278
280
  multipart-post (2.4.1)
279
281
  mutex_m (0.3.0)
280
- mysql2 (0.5.6)
282
+ mysql2 (0.5.7)
283
+ bigdecimal
281
284
  net-imap (0.6.6)
282
285
  date
283
286
  net-protocol
@@ -308,8 +311,8 @@ GEM
308
311
  nokogiri (1.19.4-x86_64-linux-musl)
309
312
  racc (~> 1.4)
310
313
  orm_adapter (0.5.0)
311
- paper_trail (16.0.0)
312
- activerecord (>= 6.1)
314
+ paper_trail (17.0.0)
315
+ activerecord (>= 7.1)
313
316
  request_store (~> 1.4)
314
317
  paper_trail-association_tracking (2.3.0)
315
318
  paper_trail (>= 12.0)
@@ -344,20 +347,20 @@ GEM
344
347
  rackup (2.3.1)
345
348
  rack (>= 3)
346
349
  radius (0.8.0)
347
- rails (7.2.3.2)
348
- actioncable (= 7.2.3.2)
349
- actionmailbox (= 7.2.3.2)
350
- actionmailer (= 7.2.3.2)
351
- actionpack (= 7.2.3.2)
352
- actiontext (= 7.2.3.2)
353
- actionview (= 7.2.3.2)
354
- activejob (= 7.2.3.2)
355
- activemodel (= 7.2.3.2)
356
- activerecord (= 7.2.3.2)
357
- activestorage (= 7.2.3.2)
358
- activesupport (= 7.2.3.2)
350
+ rails (8.1.3.1)
351
+ actioncable (= 8.1.3.1)
352
+ actionmailbox (= 8.1.3.1)
353
+ actionmailer (= 8.1.3.1)
354
+ actionpack (= 8.1.3.1)
355
+ actiontext (= 8.1.3.1)
356
+ actionview (= 8.1.3.1)
357
+ activejob (= 8.1.3.1)
358
+ activemodel (= 8.1.3.1)
359
+ activerecord (= 8.1.3.1)
360
+ activestorage (= 8.1.3.1)
361
+ activesupport (= 8.1.3.1)
359
362
  bundler (>= 1.15.0)
360
- railties (= 7.2.3.2)
363
+ railties (= 8.1.3.1)
361
364
  rails-dom-testing (2.3.0)
362
365
  activesupport (>= 5.0.0)
363
366
  minitest
@@ -367,10 +370,9 @@ GEM
367
370
  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)
368
371
  rails-observers (0.1.5)
369
372
  activemodel (>= 4.0)
370
- railties (7.2.3.2)
371
- actionpack (= 7.2.3.2)
372
- activesupport (= 7.2.3.2)
373
- cgi
373
+ railties (8.1.3.1)
374
+ actionpack (= 8.1.3.1)
375
+ activesupport (= 8.1.3.1)
374
376
  irb (~> 1.13)
375
377
  rackup (>= 1.0.0)
376
378
  rake (>= 12.2)
@@ -382,7 +384,7 @@ GEM
382
384
  activerecord (>= 6.1.5)
383
385
  activesupport (>= 6.1.5)
384
386
  i18n
385
- rbs (4.1.0)
387
+ rbs (4.1.3)
386
388
  logger
387
389
  prism (>= 1.6.0)
388
390
  tsort
@@ -391,8 +393,8 @@ GEM
391
393
  prism (>= 1.6.0)
392
394
  rbs (>= 4.0.0)
393
395
  tsort
394
- regexp_parser (2.9.2)
395
- reline (0.6.3)
396
+ regexp_parser (2.12.0)
397
+ reline (0.7.0)
396
398
  io-console (~> 0.5)
397
399
  request_store (1.7.0)
398
400
  rack (>= 1.4)
@@ -410,12 +412,12 @@ GEM
410
412
  chunky_png (~> 1.0)
411
413
  rqrcode_core (~> 2.0)
412
414
  rqrcode_core (2.1.0)
413
- rspec-core (3.13.4)
415
+ rspec-core (3.13.6)
414
416
  rspec-support (~> 3.13.0)
415
417
  rspec-expectations (3.13.5)
416
418
  diff-lcs (>= 1.2.0, < 2.0)
417
419
  rspec-support (~> 3.13.0)
418
- rspec-mocks (3.13.5)
420
+ rspec-mocks (3.13.8)
419
421
  diff-lcs (>= 1.2.0, < 2.0)
420
422
  rspec-support (~> 3.13.0)
421
423
  rspec-rails (7.1.1)
@@ -426,12 +428,9 @@ GEM
426
428
  rspec-expectations (~> 3.13)
427
429
  rspec-mocks (~> 3.13)
428
430
  rspec-support (~> 3.13)
429
- rspec-support (3.13.4)
431
+ rspec-support (3.13.7)
430
432
  rspec_junit_formatter (0.6.0)
431
433
  rspec-core (>= 2, < 4, != 2.12.0)
432
- ruby-vips (2.2.2)
433
- ffi (~> 1.12)
434
- logger
435
434
  sass-rails (6.0.0)
436
435
  sassc-rails (~> 2.1, >= 2.1.1)
437
436
  sassc (2.4.0)
@@ -443,15 +442,11 @@ GEM
443
442
  sprockets-rails
444
443
  tilt
445
444
  securerandom (0.4.1)
446
- simplecov (0.22.0)
447
- docile (~> 1.1)
448
- simplecov-html (~> 0.11)
449
- simplecov_json_formatter (~> 0.1)
450
- simplecov-html (0.13.1)
451
- simplecov-lcov (0.8.0)
452
- simplecov_json_formatter (0.1.4)
453
- sprockets (4.2.1)
445
+ simplecov (1.0.3)
446
+ simplecov-lcov (0.9.0)
447
+ sprockets (4.2.2)
454
448
  concurrent-ruby (~> 1.0)
449
+ logger
455
450
  rack (>= 2.2.4, < 4)
456
451
  sprockets-rails (3.5.2)
457
452
  actionpack (>= 6.1)
@@ -460,9 +455,9 @@ GEM
460
455
  ssrf_filter (1.5.0)
461
456
  stringex (2.8.6)
462
457
  stringio (3.2.0)
463
- temple (0.10.3)
458
+ temple (0.10.6)
464
459
  thor (1.5.0)
465
- tilt (2.4.0)
460
+ tilt (2.8.0)
466
461
  timeout (0.6.1)
467
462
  trustygems (0.2.1)
468
463
  rake
@@ -471,7 +466,7 @@ GEM
471
466
  concurrent-ruby (~> 1.0)
472
467
  uglifier (4.2.1)
473
468
  execjs (>= 0.3.0, < 3)
474
- uri (1.0.4)
469
+ uri (1.1.1)
475
470
  useragent (0.16.11)
476
471
  warden (1.2.9)
477
472
  rack (>= 2.0.9)
@@ -482,7 +477,7 @@ GEM
482
477
  will_paginate (4.0.1)
483
478
  xpath (3.2.0)
484
479
  nokogiri (~> 1.8)
485
- zeitwerk (2.8.2)
480
+ zeitwerk (2.8.3)
486
481
 
487
482
  PLATFORMS
488
483
  aarch64-linux
@@ -504,9 +499,9 @@ DEPENDENCIES
504
499
  factory_bot_rails (= 6.5.1)
505
500
  file_validators
506
501
  jsbundling-rails (~> 1.3)
507
- launchy (~> 3.0.1)
502
+ launchy (~> 3.1.1)
508
503
  mysql2
509
- paper_trail (~> 16.0.0)
504
+ paper_trail (~> 17.0.0)
510
505
  paper_trail-association_tracking (~> 2.3.0)
511
506
  poltergeist (~> 1.18.1)
512
507
  pry-byebug
@@ -19,11 +19,22 @@ module Admin::PagesHelper
19
19
  end
20
20
 
21
21
  def parent_page_options(current_site, page)
22
- parent_pages = []
23
- parent_pages.concat(Page.parent_pages(current_site.homepage_id))
24
- parent_pages << page.parent if page.parent
25
- selected_page_id = page.parent_id
26
- options_for_select(parent_pages.map { |p| [p.title, p.id] }, selected_page_id)
22
+ parent_pages = Page.parent_pages(current_site.homepage_id).to_a
23
+ parent_pages << page.parent if page.parent && parent_pages.exclude?(page.parent)
24
+ # A page can never be its own parent. For a site's root page this would
25
+ # otherwise set parent_id to itself and create an infinite loop in the tree.
26
+ parent_pages.reject! { |p| p.id == page.id }
27
+ # The root (top) page of a site must have no parent, so give it a blank
28
+ # option. Without one the browser submits the first option on save, which
29
+ # gives the root page a parent and breaks the whole site.
30
+ return options_for_select([[t('select.none'), '']], '') if root_page?(current_site, page)
31
+
32
+ options = parent_pages.map { |p| [p.title, p.id] }
33
+ options_for_select(options, page.parent.id)
34
+ end
35
+
36
+ def root_page?(current_site, page)
37
+ page.id.present? && page.id == current_site.homepage_id
27
38
  end
28
39
 
29
40
  def revert_confirmation_message(version)
@@ -17,7 +17,7 @@ end
17
17
  module TrustyCms
18
18
  class Application < Rails::Application
19
19
  include TrustyCms::Initializer
20
- config.load_defaults 7.2
20
+ config.load_defaults 8.0
21
21
 
22
22
  Rails.autoloaders.log!
23
23
  # Enable the asset pipeline
@@ -5,7 +5,7 @@ module TrustyCms::AvailableLocales
5
5
  available_locales = {}
6
6
  TrustyCms.configuration.i18n.load_path.each do |path|
7
7
  if File.exist?(path) && path !~ /_available_tags/
8
- locale_yaml = YAML.load_file(path)
8
+ locale_yaml = YAML.load_file(path, aliases: true)
9
9
  stem = File.basename(path, '.yml')
10
10
  if locale_yaml[stem] && lang = locale_yaml[stem]['this_file_language']
11
11
  available_locales[lang] = stem
@@ -145,7 +145,7 @@ module TrustyCms
145
145
  end
146
146
 
147
147
  def load_template_file(filename)
148
- YAML.load_file(filename)
148
+ YAML.load_file(filename, aliases: true)
149
149
  end
150
150
 
151
151
  def create_records(template)
@@ -3,7 +3,7 @@ module TrustyCms
3
3
  class << self
4
4
  def establish_connection
5
5
  unless ActiveRecord::Base.connected?
6
- connection_hash = YAML.load_file("#{Rails.root}/config/database.yml").to_hash
6
+ connection_hash = YAML.load_file("#{Rails.root}/config/database.yml", aliases: true).to_hash
7
7
  env_connection = connection_hash[Rails.env]
8
8
  ActiveRecord::Base.establish_connection(env_connection)
9
9
  end
@@ -23,7 +23,7 @@ module TrustyCms
23
23
  begin
24
24
  TrustyCms::Config.transaction do
25
25
  TrustyCms::Config.delete_all if clear
26
- configs = YAML.load(YAML.load_file(path))
26
+ configs = YAML.load(YAML.load_file(path), aliases: true)
27
27
  configs.each do |key, value|
28
28
  c = TrustyCms::Config.find_or_initialize_by_key(key)
29
29
  c.value = value
@@ -1,3 +1,3 @@
1
1
  module TrustyCms
2
- VERSION = '7.2'.freeze
2
+ VERSION = '8.1.0'.freeze
3
3
  end
@@ -116,18 +116,27 @@ RSpec.describe Admin::PagesController, type: :controller do
116
116
  end
117
117
 
118
118
  describe 'GET #search' do
119
- it 'returns matching pages when a query is present' do
120
- create(:page, title: 'Findable', slug: 'findable', parent: home)
119
+ # The suite-wide stub returns nil, which the real Page.current_site can't do:
120
+ # the multi-site extension defines it as `@current_site ||= Site.default`, and
121
+ # Site.default ends in a catchall it creates. #search is the one action that
122
+ # reads it, so stub it faithfully here and let the fallback actually run.
123
+ let(:site) { create(:site) }
121
124
 
122
- get :search, params: { site_id: nil, search: { query: 'Findable' } }
125
+ before { allow(Page).to receive(:current_site).and_return(site) }
126
+
127
+ it 'falls back to the current site when no site_id is given' do
128
+ create(:page, title: 'Findable', slug: 'findable', parent: home, site_id: site.id)
129
+
130
+ get :search, params: { search: { query: 'Findable' } }
123
131
 
124
132
  expect(response).to have_http_status(:ok)
133
+ expect(controller.instance_variable_get(:@site_id)).to eq(site.id)
125
134
  titles = controller.instance_variable_get(:@pages).map(&:title)
126
135
  expect(titles).to include('Findable')
127
136
  end
128
137
 
129
138
  it 'does not run a query when none is given' do
130
- get :search, params: { site_id: '' }
139
+ get :search
131
140
  expect(controller.instance_variable_get(:@pages)).to be_nil
132
141
  end
133
142
  end
@@ -142,21 +151,17 @@ RSpec.describe Admin::PagesController, type: :controller do
142
151
  end
143
152
 
144
153
  describe 'PUT #restore' do
145
- # NOTE: latent bug / Rails 8 upgrade blocker restore_page_version calls
146
- # PaperTrail's `reify`, which YAML-loads the stored version. Under Psych 4+
147
- # (psych 5.4 is pinned) safe-loading rejects ActiveSupport::TimeWithZone
148
- # because no permitted classes are configured, so restoring any page that has
149
- # a timestamp in its versioned state raises Psych::DisallowedClass. Page
150
- # restore is effectively broken until paper_trail's serializer is configured
151
- # with permitted classes (e.g. via ActiveRecord::Base.yaml_column_permitted_classes
152
- # or a custom serializer). Characterizing current behavior.
153
- it 'currently fails to reify a versioned page (Psych safe-load blocker)' do
154
+ # reify YAML-loads the stored version under Psych 4+ safe-load, which needs
155
+ # ActiveSupport::TimeWithZone (and friends) in
156
+ # ActiveRecord.yaml_column_permitted_classes configured in the dummy app.
157
+ it 'reifies the prior version and redirects to edit' do
154
158
  page = create(:page, title: 'V1', parent: home)
155
159
  PaperTrail.request(whodunnit: admin.id.to_s) { page.update!(title: 'V2') }
156
160
 
157
- expect {
158
- put :restore, params: { id: page.id, version_index: 1 }
159
- }.to raise_error(Psych::DisallowedClass, /TimeWithZone/)
161
+ put :restore, params: { id: page.id, version_index: 1 }
162
+
163
+ expect(response).to redirect_to(edit_admin_page_path(page))
164
+ expect(page.reload.title).to eq('V1')
160
165
  end
161
166
  end
162
167
  end
@@ -41,6 +41,7 @@ module TrustyCms
41
41
 
42
42
  config.encoding = 'utf-8'
43
43
  config.time_zone = 'UTC'
44
+
44
45
  # Skip frameworks you're not going to use (only works if using vendor/rails).
45
46
  # To use Rails without a database, you must remove the Active Record framework
46
47
  # config.frameworks -= [ :action_mailer ]
@@ -119,6 +120,11 @@ module TrustyCms
119
120
  end
120
121
  end
121
122
 
123
+ config.active_record.yaml_column_permitted_classes = [
124
+ Symbol, Date, Time, ActiveSupport::TimeWithZone, ActiveSupport::TimeZone,
125
+ ActiveSupport::HashWithIndifferentAccess, BigDecimal
126
+ ]
127
+
122
128
  config.to_prepare do
123
129
  extension_loader.deactivate_extensions
124
130
  extension_loader.load_extensions
@@ -72,6 +72,36 @@ describe Admin::PagesHelper, type: :helper do
72
72
  expect(html).to include('Home')
73
73
  expect(html).to include("value=\"#{home.id}\"")
74
74
  end
75
+
76
+ it 'offers a blank parent option for the site root page' do
77
+ home = FactoryBot.create(:home, title: 'Home')
78
+ current_site = double('Site', homepage_id: home.id)
79
+ allow(Page).to receive(:parent_pages).with(home.id).and_return([home])
80
+
81
+ html = helper.parent_page_options(current_site, home)
82
+ expect(html).to include('<option selected="selected" value="">&lt;none&gt;</option>')
83
+ end
84
+
85
+ it 'never lists the root page as a candidate for its own parent' do
86
+ home = FactoryBot.create(:home, title: 'Home')
87
+ current_site = double('Site', homepage_id: home.id)
88
+ allow(Page).to receive(:parent_pages).with(home.id).and_return([home])
89
+
90
+ html = helper.parent_page_options(current_site, home)
91
+
92
+ expect(html).not_to include("value=\"#{home.id}\"")
93
+ end
94
+
95
+ it 'does not offer a blank parent option for non-root pages' do
96
+ home = FactoryBot.create(:home, title: 'Home')
97
+ child = FactoryBot.create(:page, title: 'Child', slug: 'child', parent: home)
98
+ current_site = double('Site', homepage_id: home.id)
99
+ allow(Page).to receive(:parent_pages).with(home.id).and_return([home])
100
+
101
+ html = helper.parent_page_options(current_site, child)
102
+
103
+ expect(html).not_to include('<option value="">')
104
+ end
75
105
  end
76
106
 
77
107
  describe '#revert_confirmation_message' do
data/spec/spec_helper.rb CHANGED
@@ -13,9 +13,9 @@ SimpleCov::Formatter::LcovFormatter.config do |config|
13
13
  end
14
14
 
15
15
  SimpleCov.configure do
16
- add_filter %r{^/lib/generators/}
17
- add_filter 'lib/trusty_cms/setup.rb'
18
- add_filter %r{/templates/} # generated-app boilerplate
16
+ skip %r{^/lib/generators/}
17
+ skip 'lib/trusty_cms/setup.rb'
18
+ skip %r{/templates/} # generated-app boilerplate
19
19
  end
20
20
 
21
21
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
data/trusty_cms.gemspec CHANGED
@@ -37,21 +37,22 @@ a general purpose content management system--not merely a blogging engine.'
37
37
  s.add_dependency 'diffy'
38
38
  s.add_dependency 'drb'
39
39
  s.add_dependency 'execjs', '~> 2.7'
40
- s.add_dependency 'haml', '~> 6.3.0'
41
- s.add_dependency 'haml-rails', '~> 2.1'
40
+ s.add_dependency 'haml', '>= 6.3', '< 7.4'
41
+ s.add_dependency 'haml-rails', '>= 2.1', '< 4.0'
42
42
  s.add_dependency 'highline', '>= 1.7.8', '< 3.2.0'
43
43
  s.add_dependency 'image_processing'
44
44
  s.add_dependency 'kraken-io'
45
+ s.add_dependency 'mini_magick', '~> 5.0'
45
46
  s.add_dependency 'mini_racer'
46
47
  s.add_dependency 'mutex_m'
47
48
  s.add_dependency 'mysql2'
48
- s.add_dependency 'paper_trail', '~> 16.0.0'
49
+ s.add_dependency 'paper_trail', '~> 17.0.0'
49
50
  s.add_dependency 'paper_trail-association_tracking', '>= 2.2.1', '< 2.4.0'
50
51
  s.add_dependency 'psych', '5.4.0'
51
52
  s.add_dependency 'rack', '>= 2.0.1', '< 3.2.0'
52
53
  s.add_dependency 'rack-cache', '~> 1.7'
53
54
  s.add_dependency 'radius', '~> 0.8'
54
- s.add_dependency 'rails', '>= 7.2', '< 8.0'
55
+ s.add_dependency 'rails', '~> 8.1.0'
55
56
  s.add_dependency 'rake', '< 14.0'
56
57
  s.add_dependency 'ransack', '~> 4.2.1'
57
58
  s.add_dependency 'rdoc', '>= 5.1', '< 9.0'
data/yarn.lock CHANGED
@@ -1671,9 +1671,9 @@ fast-glob@^3.2.5, fast-glob@^3.2.9:
1671
1671
  micromatch "^4.0.8"
1672
1672
 
1673
1673
  fast-uri@^3.0.1:
1674
- version "3.1.4"
1675
- resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.4.tgz#3b3daf9ce68f41f956df0b505132c0cfce9ec7af"
1676
- integrity sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==
1674
+ version "3.1.5"
1675
+ resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.5.tgz#610f37419a030270430cecd68d74e3d4d96725d0"
1676
+ integrity sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==
1677
1677
 
1678
1678
  fastest-levenshtein@^1.0.12:
1679
1679
  version "1.0.16"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trusty-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: '7.2'
4
+ version: 8.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TrustyCms CMS dev team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-08-04 00:00:00.000000000 Z
11
+ date: 2026-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activestorage-validator
@@ -194,30 +194,42 @@ dependencies:
194
194
  name: haml
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - "~>"
197
+ - - ">="
198
198
  - !ruby/object:Gem::Version
199
- version: 6.3.0
199
+ version: '6.3'
200
+ - - "<"
201
+ - !ruby/object:Gem::Version
202
+ version: '7.4'
200
203
  type: :runtime
201
204
  prerelease: false
202
205
  version_requirements: !ruby/object:Gem::Requirement
203
206
  requirements:
204
- - - "~>"
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '6.3'
210
+ - - "<"
205
211
  - !ruby/object:Gem::Version
206
- version: 6.3.0
212
+ version: '7.4'
207
213
  - !ruby/object:Gem::Dependency
208
214
  name: haml-rails
209
215
  requirement: !ruby/object:Gem::Requirement
210
216
  requirements:
211
- - - "~>"
217
+ - - ">="
212
218
  - !ruby/object:Gem::Version
213
219
  version: '2.1'
220
+ - - "<"
221
+ - !ruby/object:Gem::Version
222
+ version: '4.0'
214
223
  type: :runtime
215
224
  prerelease: false
216
225
  version_requirements: !ruby/object:Gem::Requirement
217
226
  requirements:
218
- - - "~>"
227
+ - - ">="
219
228
  - !ruby/object:Gem::Version
220
229
  version: '2.1'
230
+ - - "<"
231
+ - !ruby/object:Gem::Version
232
+ version: '4.0'
221
233
  - !ruby/object:Gem::Dependency
222
234
  name: highline
223
235
  requirement: !ruby/object:Gem::Requirement
@@ -266,6 +278,20 @@ dependencies:
266
278
  - - ">="
267
279
  - !ruby/object:Gem::Version
268
280
  version: '0'
281
+ - !ruby/object:Gem::Dependency
282
+ name: mini_magick
283
+ requirement: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - "~>"
286
+ - !ruby/object:Gem::Version
287
+ version: '5.0'
288
+ type: :runtime
289
+ prerelease: false
290
+ version_requirements: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - "~>"
293
+ - !ruby/object:Gem::Version
294
+ version: '5.0'
269
295
  - !ruby/object:Gem::Dependency
270
296
  name: mini_racer
271
297
  requirement: !ruby/object:Gem::Requirement
@@ -314,14 +340,14 @@ dependencies:
314
340
  requirements:
315
341
  - - "~>"
316
342
  - !ruby/object:Gem::Version
317
- version: 16.0.0
343
+ version: 17.0.0
318
344
  type: :runtime
319
345
  prerelease: false
320
346
  version_requirements: !ruby/object:Gem::Requirement
321
347
  requirements:
322
348
  - - "~>"
323
349
  - !ruby/object:Gem::Version
324
- version: 16.0.0
350
+ version: 17.0.0
325
351
  - !ruby/object:Gem::Dependency
326
352
  name: paper_trail-association_tracking
327
353
  requirement: !ruby/object:Gem::Requirement
@@ -408,22 +434,16 @@ dependencies:
408
434
  name: rails
409
435
  requirement: !ruby/object:Gem::Requirement
410
436
  requirements:
411
- - - ">="
412
- - !ruby/object:Gem::Version
413
- version: '7.2'
414
- - - "<"
437
+ - - "~>"
415
438
  - !ruby/object:Gem::Version
416
- version: '8.0'
439
+ version: 8.1.0
417
440
  type: :runtime
418
441
  prerelease: false
419
442
  version_requirements: !ruby/object:Gem::Requirement
420
443
  requirements:
421
- - - ">="
422
- - !ruby/object:Gem::Version
423
- version: '7.2'
424
- - - "<"
444
+ - - "~>"
425
445
  - !ruby/object:Gem::Version
426
- version: '8.0'
446
+ version: 8.1.0
427
447
  - !ruby/object:Gem::Dependency
428
448
  name: rake
429
449
  requirement: !ruby/object:Gem::Requirement