cubism 0.2.1 → 0.2.2

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +6 -11
  3. data/Gemfile.lock +278 -126
  4. data/app/helpers/cubism_helper.rb +3 -1
  5. data/cubism.gemspec +3 -4
  6. data/lib/cubism/broadcaster.rb +7 -3
  7. data/lib/cubism/cubicle_store.rb +9 -2
  8. data/lib/cubism/preprocessor.rb +4 -1
  9. data/lib/cubism/version.rb +1 -1
  10. data/package.json +1 -1
  11. metadata +7 -95
  12. data/test/block_container_test.rb +0 -105
  13. data/test/block_source_test.rb +0 -102
  14. data/test/broadcaster_test.rb +0 -66
  15. data/test/channels/cubism/presence_channel_test.rb +0 -72
  16. data/test/cubicle_store_test.rb +0 -34
  17. data/test/cubism_test.rb +0 -7
  18. data/test/dummy/app/channels/application_cable/channel.rb +0 -4
  19. data/test/dummy/app/channels/application_cable/connection.rb +0 -4
  20. data/test/dummy/app/controllers/application_controller.rb +0 -2
  21. data/test/dummy/app/helpers/application_helper.rb +0 -2
  22. data/test/dummy/app/jobs/application_job.rb +0 -7
  23. data/test/dummy/app/mailers/application_mailer.rb +0 -4
  24. data/test/dummy/app/models/application_record.rb +0 -3
  25. data/test/dummy/app/models/post.rb +0 -3
  26. data/test/dummy/app/models/user.rb +0 -3
  27. data/test/dummy/config/application.rb +0 -22
  28. data/test/dummy/config/boot.rb +0 -5
  29. data/test/dummy/config/environment.rb +0 -5
  30. data/test/dummy/config/environments/development.rb +0 -76
  31. data/test/dummy/config/environments/production.rb +0 -120
  32. data/test/dummy/config/environments/test.rb +0 -59
  33. data/test/dummy/config/initializers/application_controller_renderer.rb +0 -8
  34. data/test/dummy/config/initializers/assets.rb +0 -12
  35. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -8
  36. data/test/dummy/config/initializers/content_security_policy.rb +0 -28
  37. data/test/dummy/config/initializers/cookies_serializer.rb +0 -5
  38. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -6
  39. data/test/dummy/config/initializers/inflections.rb +0 -16
  40. data/test/dummy/config/initializers/mime_types.rb +0 -4
  41. data/test/dummy/config/initializers/permissions_policy.rb +0 -11
  42. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  43. data/test/dummy/config/puma.rb +0 -43
  44. data/test/dummy/config/routes.rb +0 -3
  45. data/test/dummy/db/migrate/20220102072929_create_posts.rb +0 -10
  46. data/test/dummy/db/migrate/20220102073003_create_users.rb +0 -9
  47. data/test/dummy/db/schema.rb +0 -26
  48. data/test/dummy/test/models/post_test.rb +0 -7
  49. data/test/dummy/test/models/user_test.rb +0 -7
  50. data/test/helpers/cubism_helper_test.rb +0 -39
  51. data/test/integration/navigation_test.rb +0 -7
  52. data/test/models/concerns/presence_test.rb +0 -25
  53. data/test/models/concerns/user_test.rb +0 -9
  54. data/test/rendering/preprocessor_test.rb +0 -61
  55. data/test/test_helper.rb +0 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2807897c46efb6dd8187d18c80c04bee84dfd0e50feeda467d5f735a0af9820e
4
- data.tar.gz: 0440ddef045b5ce94cbe1928bcf662cf4726e5c206c8595c2c797aa8ad754463
3
+ metadata.gz: 6b12dc19fc769be8e8a3c41c6ee779c1fb3cdfb96ce2d8e92aebfbe323b22fa0
4
+ data.tar.gz: 678d873717cc8c496060d40d8b4ab5d0376e652756a971bce6d1acbdfe557bf8
5
5
  SHA512:
6
- metadata.gz: bed13da912fad03ac48d8afccb340fbf5b7bf480bfac99e615a77c3fd24cbb47c19ab038a6bcb778323305f4831e20dc33342e0942e56a15ff558fcbf31e99fd
7
- data.tar.gz: 1290222d3ac7aa0f693b49fe321252649c37b18a7fef3ca6489e8aad61da99d02a243151d234a8b9759dc9fa9b368b3391ef819236642dd54610f003bfb6672e
6
+ metadata.gz: 962f7712a322e2105aca3aaf7e62505a87783179b55ac0d95a4d10ffd46f12bf3bc8e1d83990c80d11d21f9853a60459e73fd7eb9417eec669aa6bc9f372354f
7
+ data.tar.gz: 7988a8985f32e5163d6514905587cff9d11ea1b22d6faa00fa5910b224133a41d0691aab4bc91e4bf303a0b8f5625de6d7a7af4ff0094beaf1f01e65331d590f
data/Appraisals CHANGED
@@ -1,16 +1,11 @@
1
- if RUBY_VERSION >= "2.7"
2
- appraise "rails-7-0" do
3
- gem "rails", "7.0.1"
4
- gem "sqlite3", "~> 1.4"
5
- end
1
+ appraise "rails-7-2" do
2
+ gem "rails", "~> 7.2.0"
6
3
  end
7
4
 
8
- appraise "rails-6-1" do
9
- gem "rails", "~> 6.1"
10
- gem "sqlite3", "~> 1.4"
5
+ appraise "rails-8-0" do
6
+ gem "rails", "~> 8.0.0"
11
7
  end
12
8
 
13
- appraise "rails-6-0" do
14
- gem "rails", "~> 6.0"
15
- gem "sqlite3", "~> 1.4"
9
+ appraise "rails-8-1" do
10
+ gem "rails", "~> 8.1.0"
16
11
  end
data/Gemfile.lock CHANGED
@@ -1,40 +1,40 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cubism (0.2.1)
4
+ cubism (0.2.2)
5
5
  cable_ready (>= 5.0.0)
6
6
  kredis (>= 0.4)
7
7
  observer
8
- rails (>= 6.0)
8
+ rails (>= 7.2)
9
9
 
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- action_text-trix (2.1.16)
13
+ action_text-trix (2.1.19)
14
14
  railties
15
- actioncable (8.1.2)
16
- actionpack (= 8.1.2)
17
- activesupport (= 8.1.2)
15
+ actioncable (8.1.3.1)
16
+ actionpack (= 8.1.3.1)
17
+ activesupport (= 8.1.3.1)
18
18
  nio4r (~> 2.0)
19
19
  websocket-driver (>= 0.6.1)
20
20
  zeitwerk (~> 2.6)
21
- actionmailbox (8.1.2)
22
- actionpack (= 8.1.2)
23
- activejob (= 8.1.2)
24
- activerecord (= 8.1.2)
25
- activestorage (= 8.1.2)
26
- activesupport (= 8.1.2)
21
+ actionmailbox (8.1.3.1)
22
+ actionpack (= 8.1.3.1)
23
+ activejob (= 8.1.3.1)
24
+ activerecord (= 8.1.3.1)
25
+ activestorage (= 8.1.3.1)
26
+ activesupport (= 8.1.3.1)
27
27
  mail (>= 2.8.0)
28
- actionmailer (8.1.2)
29
- actionpack (= 8.1.2)
30
- actionview (= 8.1.2)
31
- activejob (= 8.1.2)
32
- activesupport (= 8.1.2)
28
+ actionmailer (8.1.3.1)
29
+ actionpack (= 8.1.3.1)
30
+ actionview (= 8.1.3.1)
31
+ activejob (= 8.1.3.1)
32
+ activesupport (= 8.1.3.1)
33
33
  mail (>= 2.8.0)
34
34
  rails-dom-testing (~> 2.2)
35
- actionpack (8.1.2)
36
- actionview (= 8.1.2)
37
- activesupport (= 8.1.2)
35
+ actionpack (8.1.3.1)
36
+ actionview (= 8.1.3.1)
37
+ activesupport (= 8.1.3.1)
38
38
  nokogiri (>= 1.8.5)
39
39
  rack (>= 2.2.4)
40
40
  rack-session (>= 1.0.1)
@@ -42,36 +42,36 @@ GEM
42
42
  rails-dom-testing (~> 2.2)
43
43
  rails-html-sanitizer (~> 1.6)
44
44
  useragent (~> 0.16)
45
- actiontext (8.1.2)
45
+ actiontext (8.1.3.1)
46
46
  action_text-trix (~> 2.1.15)
47
- actionpack (= 8.1.2)
48
- activerecord (= 8.1.2)
49
- activestorage (= 8.1.2)
50
- activesupport (= 8.1.2)
47
+ actionpack (= 8.1.3.1)
48
+ activerecord (= 8.1.3.1)
49
+ activestorage (= 8.1.3.1)
50
+ activesupport (= 8.1.3.1)
51
51
  globalid (>= 0.6.0)
52
52
  nokogiri (>= 1.8.5)
53
- actionview (8.1.2)
54
- activesupport (= 8.1.2)
53
+ actionview (8.1.3.1)
54
+ activesupport (= 8.1.3.1)
55
55
  builder (~> 3.1)
56
56
  erubi (~> 1.11)
57
57
  rails-dom-testing (~> 2.2)
58
58
  rails-html-sanitizer (~> 1.6)
59
- activejob (8.1.2)
60
- activesupport (= 8.1.2)
59
+ activejob (8.1.3.1)
60
+ activesupport (= 8.1.3.1)
61
61
  globalid (>= 0.3.6)
62
- activemodel (8.1.2)
63
- activesupport (= 8.1.2)
64
- activerecord (8.1.2)
65
- activemodel (= 8.1.2)
66
- activesupport (= 8.1.2)
62
+ activemodel (8.1.3.1)
63
+ activesupport (= 8.1.3.1)
64
+ activerecord (8.1.3.1)
65
+ activemodel (= 8.1.3.1)
66
+ activesupport (= 8.1.3.1)
67
67
  timeout (>= 0.4.0)
68
- activestorage (8.1.2)
69
- actionpack (= 8.1.2)
70
- activejob (= 8.1.2)
71
- activerecord (= 8.1.2)
72
- activesupport (= 8.1.2)
68
+ activestorage (8.1.3.1)
69
+ actionpack (= 8.1.3.1)
70
+ activejob (= 8.1.3.1)
71
+ activerecord (= 8.1.3.1)
72
+ activesupport (= 8.1.3.1)
73
73
  marcel (~> 1.0)
74
- activesupport (8.1.2)
74
+ activesupport (8.1.3.1)
75
75
  base64
76
76
  bigdecimal
77
77
  concurrent-ruby (~> 1.0, >= 1.3.1)
@@ -84,13 +84,13 @@ GEM
84
84
  securerandom (>= 0.3)
85
85
  tzinfo (~> 2.0, >= 2.0.5)
86
86
  uri (>= 0.13.1)
87
- appraisal (2.4.1)
87
+ appraisal (2.5.0)
88
88
  bundler
89
89
  rake
90
90
  thor (>= 0.14.0)
91
- ast (2.4.2)
91
+ ast (2.4.3)
92
92
  base64 (0.3.0)
93
- bigdecimal (4.0.1)
93
+ bigdecimal (4.1.2)
94
94
  builder (3.3.0)
95
95
  cable_ready (5.0.6)
96
96
  actionpack (>= 5.2)
@@ -100,170 +100,211 @@ GEM
100
100
  railties (>= 5.2)
101
101
  thread-local (>= 1.1.0)
102
102
  coderay (1.1.3)
103
- concurrent-ruby (1.3.6)
103
+ concurrent-ruby (1.3.8)
104
104
  connection_pool (3.0.2)
105
- crass (1.0.6)
105
+ crass (1.0.7)
106
106
  date (3.5.1)
107
107
  drb (2.2.3)
108
- erb (6.0.1)
108
+ erb (6.0.7)
109
109
  erubi (1.13.1)
110
- globalid (1.3.0)
110
+ globalid (1.4.0)
111
111
  activesupport (>= 6.1)
112
- i18n (1.14.8)
112
+ i18n (1.15.2)
113
113
  concurrent-ruby (~> 1.0)
114
- io-console (0.8.2)
115
- irb (1.17.0)
114
+ io-console (0.9.2)
115
+ irb (1.18.0)
116
116
  pp (>= 0.6.0)
117
117
  prism (>= 1.3.0)
118
118
  rdoc (>= 4.0.0)
119
119
  reline (>= 0.4.2)
120
- json (2.18.1)
120
+ json (2.21.2)
121
121
  kredis (1.8.0)
122
122
  activemodel (>= 6.0.0)
123
123
  activesupport (>= 6.0.0)
124
124
  redis (>= 4.2, < 6)
125
+ language_server-protocol (3.17.0.6)
126
+ lint_roller (1.1.0)
125
127
  logger (1.7.0)
126
- loofah (2.25.0)
128
+ loofah (2.25.2)
127
129
  crass (~> 1.0.2)
128
130
  nokogiri (>= 1.12.0)
129
- mail (2.9.0)
131
+ mail (2.9.1)
130
132
  logger
131
133
  mini_mime (>= 0.1.1)
132
134
  net-imap
133
135
  net-pop
134
136
  net-smtp
135
- marcel (1.1.0)
136
- method_source (1.0.0)
137
+ marcel (1.2.1)
138
+ method_source (1.1.0)
137
139
  mini_mime (1.1.5)
138
- mini_portile2 (2.8.9)
139
- minitest (6.0.1)
140
+ minitest (6.0.6)
141
+ drb (~> 2.0)
140
142
  prism (~> 1.5)
141
- mocha (3.0.2)
143
+ mocha (3.1.0)
142
144
  ruby2_keywords (>= 0.0.5)
143
- net-imap (0.6.3)
145
+ net-imap (0.6.6)
144
146
  date
145
147
  net-protocol
146
148
  net-pop (0.1.2)
147
149
  net-protocol
148
- net-protocol (0.2.2)
150
+ net-protocol (0.3.0)
149
151
  timeout
150
152
  net-smtp (0.5.1)
151
153
  net-protocol
152
154
  nio4r (2.7.5)
153
- nokogiri (1.19.1)
154
- mini_portile2 (~> 2.8.2)
155
+ nokogiri (1.19.4-aarch64-linux-gnu)
155
156
  racc (~> 1.4)
156
- nokogiri (1.19.1-arm64-darwin)
157
+ nokogiri (1.19.4-aarch64-linux-musl)
158
+ racc (~> 1.4)
159
+ nokogiri (1.19.4-arm-linux-gnu)
160
+ racc (~> 1.4)
161
+ nokogiri (1.19.4-arm-linux-musl)
162
+ racc (~> 1.4)
163
+ nokogiri (1.19.4-arm64-darwin)
164
+ racc (~> 1.4)
165
+ nokogiri (1.19.4-x86_64-darwin)
166
+ racc (~> 1.4)
167
+ nokogiri (1.19.4-x86_64-linux-gnu)
168
+ racc (~> 1.4)
169
+ nokogiri (1.19.4-x86_64-linux-musl)
157
170
  racc (~> 1.4)
158
171
  observer (0.1.2)
159
- parallel (1.21.0)
160
- parser (3.1.0.0)
172
+ parallel (2.2.0)
173
+ parser (3.3.12.0)
161
174
  ast (~> 2.4.1)
162
- pp (0.6.3)
175
+ racc
176
+ pp (0.6.4)
163
177
  prettyprint
164
178
  prettyprint (0.2.0)
165
179
  prism (1.9.0)
166
- pry (0.14.1)
180
+ pry (0.16.0)
167
181
  coderay (~> 1.1)
168
182
  method_source (~> 1.0)
169
- psych (5.3.1)
170
- date
171
- stringio
183
+ reline (>= 0.6.0)
172
184
  racc (1.8.1)
173
- rack (3.2.5)
174
- rack-session (2.1.1)
185
+ rack (3.2.7)
186
+ rack-session (2.1.2)
175
187
  base64 (>= 0.1.0)
176
188
  rack (>= 3.0.0)
177
189
  rack-test (2.2.0)
178
190
  rack (>= 1.3)
179
191
  rackup (2.3.1)
180
192
  rack (>= 3)
181
- rails (8.1.2)
182
- actioncable (= 8.1.2)
183
- actionmailbox (= 8.1.2)
184
- actionmailer (= 8.1.2)
185
- actionpack (= 8.1.2)
186
- actiontext (= 8.1.2)
187
- actionview (= 8.1.2)
188
- activejob (= 8.1.2)
189
- activemodel (= 8.1.2)
190
- activerecord (= 8.1.2)
191
- activestorage (= 8.1.2)
192
- activesupport (= 8.1.2)
193
+ rails (8.1.3.1)
194
+ actioncable (= 8.1.3.1)
195
+ actionmailbox (= 8.1.3.1)
196
+ actionmailer (= 8.1.3.1)
197
+ actionpack (= 8.1.3.1)
198
+ actiontext (= 8.1.3.1)
199
+ actionview (= 8.1.3.1)
200
+ activejob (= 8.1.3.1)
201
+ activemodel (= 8.1.3.1)
202
+ activerecord (= 8.1.3.1)
203
+ activestorage (= 8.1.3.1)
204
+ activesupport (= 8.1.3.1)
193
205
  bundler (>= 1.15.0)
194
- railties (= 8.1.2)
206
+ railties (= 8.1.3.1)
195
207
  rails-dom-testing (2.3.0)
196
208
  activesupport (>= 5.0.0)
197
209
  minitest
198
210
  nokogiri (>= 1.6)
199
- rails-html-sanitizer (1.6.2)
200
- loofah (~> 2.21)
211
+ rails-html-sanitizer (1.7.1)
212
+ loofah (~> 2.25, >= 2.25.2)
201
213
  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)
202
- railties (8.1.2)
203
- actionpack (= 8.1.2)
204
- activesupport (= 8.1.2)
214
+ railties (8.1.3.1)
215
+ actionpack (= 8.1.3.1)
216
+ activesupport (= 8.1.3.1)
205
217
  irb (~> 1.13)
206
218
  rackup (>= 1.0.0)
207
219
  rake (>= 12.2)
208
220
  thor (~> 1.0, >= 1.2.2)
209
221
  tsort (>= 0.2)
210
222
  zeitwerk (~> 2.6)
211
- rainbow (3.0.0)
212
- rake (13.3.1)
213
- rdoc (7.2.0)
223
+ rainbow (3.1.1)
224
+ rake (13.4.2)
225
+ rbs (4.2.0)
226
+ logger
227
+ prism (>= 1.6.0)
228
+ tsort
229
+ rdoc (8.0.0)
214
230
  erb
215
- psych (>= 4.0.0)
231
+ prism (>= 1.6.0)
232
+ rbs (>= 4.0.0)
216
233
  tsort
217
234
  redis (5.4.1)
218
235
  redis-client (>= 0.22.0)
219
- redis-client (0.26.4)
236
+ redis-client (0.30.1)
220
237
  connection_pool
221
- regexp_parser (2.2.0)
222
- reline (0.6.3)
238
+ regexp_parser (2.12.0)
239
+ reline (0.7.0)
223
240
  io-console (~> 0.5)
224
- rexml (3.2.5)
225
- rubocop (1.23.0)
226
- parallel (~> 1.10)
227
- parser (>= 3.0.0.0)
241
+ rubocop (1.88.2)
242
+ json (~> 2.3)
243
+ language_server-protocol (~> 3.17.0.2)
244
+ lint_roller (~> 1.1.0)
245
+ parallel (>= 1.10)
246
+ parser (>= 3.3.0.2)
228
247
  rainbow (>= 2.2.2, < 4.0)
229
- regexp_parser (>= 1.8, < 3.0)
230
- rexml
231
- rubocop-ast (>= 1.12.0, < 2.0)
248
+ regexp_parser (>= 2.9.3, < 3.0)
249
+ rubocop-ast (>= 1.49.0, < 2.0)
232
250
  ruby-progressbar (~> 1.7)
233
- unicode-display_width (>= 1.4.0, < 3.0)
234
- rubocop-ast (1.15.1)
235
- parser (>= 3.0.1.1)
236
- rubocop-performance (1.12.0)
237
- rubocop (>= 1.7.0, < 2.0)
238
- rubocop-ast (>= 0.4.0)
239
- ruby-progressbar (1.11.0)
251
+ unicode-display_width (>= 2.4.0, < 4.0)
252
+ rubocop-ast (1.50.0)
253
+ parser (>= 3.3.7.2)
254
+ prism (~> 1.7)
255
+ rubocop-performance (1.26.1)
256
+ lint_roller (~> 1.1)
257
+ rubocop (>= 1.75.0, < 2.0)
258
+ rubocop-ast (>= 1.47.1, < 2.0)
259
+ ruby-progressbar (1.13.0)
240
260
  ruby2_keywords (0.0.5)
241
261
  securerandom (0.4.1)
242
- sqlite3 (2.9.0)
243
- mini_portile2 (~> 2.8.0)
244
- sqlite3 (2.9.0-arm64-darwin)
245
- standard (1.5.0)
246
- rubocop (= 1.23.0)
247
- rubocop-performance (= 1.12.0)
248
- stringio (3.2.0)
262
+ sqlite3 (2.9.6-aarch64-linux-gnu)
263
+ sqlite3 (2.9.6-aarch64-linux-musl)
264
+ sqlite3 (2.9.6-arm-linux-gnu)
265
+ sqlite3 (2.9.6-arm-linux-musl)
266
+ sqlite3 (2.9.6-arm64-darwin)
267
+ sqlite3 (2.9.6-x86_64-darwin)
268
+ sqlite3 (2.9.6-x86_64-linux-gnu)
269
+ sqlite3 (2.9.6-x86_64-linux-musl)
270
+ standard (1.56.0)
271
+ language_server-protocol (~> 3.17.0.2)
272
+ lint_roller (~> 1.0)
273
+ rubocop (~> 1.88.0)
274
+ standard-custom (~> 1.0.0)
275
+ standard-performance (~> 1.8)
276
+ standard-custom (1.0.2)
277
+ lint_roller (~> 1.0)
278
+ rubocop (~> 1.50)
279
+ standard-performance (1.9.0)
280
+ lint_roller (~> 1.1)
281
+ rubocop-performance (~> 1.26.0)
249
282
  thor (1.5.0)
250
283
  thread-local (1.1.0)
251
- timeout (0.6.0)
284
+ timeout (0.6.1)
252
285
  tsort (0.2.0)
253
286
  tzinfo (2.0.6)
254
287
  concurrent-ruby (~> 1.0)
255
- unicode-display_width (2.1.0)
288
+ unicode-display_width (3.2.0)
289
+ unicode-emoji (~> 4.1)
290
+ unicode-emoji (4.2.0)
256
291
  uri (1.1.1)
257
292
  useragent (0.16.11)
258
- websocket-driver (0.8.0)
293
+ websocket-driver (0.8.2)
259
294
  base64
260
295
  websocket-extensions (>= 0.1.0)
261
296
  websocket-extensions (0.1.5)
262
- zeitwerk (2.7.5)
297
+ zeitwerk (2.8.3)
263
298
 
264
299
  PLATFORMS
265
- arm64-darwin-21
266
- ruby
300
+ aarch64-linux-gnu
301
+ aarch64-linux-musl
302
+ arm-linux-gnu
303
+ arm-linux-musl
304
+ arm64-darwin
305
+ x86_64-darwin
306
+ x86_64-linux-gnu
307
+ x86_64-linux-musl
267
308
 
268
309
  DEPENDENCIES
269
310
  appraisal
@@ -272,7 +313,118 @@ DEPENDENCIES
272
313
  nokogiri
273
314
  pry
274
315
  sqlite3 (>= 2.1)
275
- standard
316
+ standard (>= 1.35.1)
317
+
318
+ CHECKSUMS
319
+ action_text-trix (2.1.19) sha256=7012f59421009cf284aa651294896414d653a61a2417c9b8714c8476d2f74009
320
+ actioncable (8.1.3.1) sha256=e318528295c878a3efdfe25f0f2267c80cb7a76eba41bb5f64d44aa380a3d91b
321
+ actionmailbox (8.1.3.1) sha256=5f704972097d843ade8e435e93694a1dac732b926df1717aceba1f3840082b1c
322
+ actionmailer (8.1.3.1) sha256=88ea441b28ff02a0c6c006468892642a3d9942affce9d294e81a74504aa5c43c
323
+ actionpack (8.1.3.1) sha256=974cb7154548e81f470b1b0f247b99cb38e87825899dca58610596e2817723d0
324
+ actiontext (8.1.3.1) sha256=5da729d833d1a29cddb1eee938878e55e503d2613e00e735f5daf58c2ba98af2
325
+ actionview (8.1.3.1) sha256=2da68b8414c47b43bfbed1ce69c5afe1c04f78c267aacb5660a4cab5ca12cfb6
326
+ activejob (8.1.3.1) sha256=1c8dd275df930df40deecffec63d913a550a33fd94bd298f69721dd96939954a
327
+ activemodel (8.1.3.1) sha256=99cc02ce2faec371d14440949d85787ebd23a907c9baef0a9d4bcd4d21888f88
328
+ activerecord (8.1.3.1) sha256=0a2fb6c28f4938f6b013a3a549bec0a7e37d535f3dc8990e804bcc3258c0403b
329
+ activestorage (8.1.3.1) sha256=f555254f387b1cffa499d2fd3115d12635eadc5b15206a8534316a67036163ef
330
+ activesupport (8.1.3.1) sha256=85458765f25ea48b9019c46b6bb3fa5683197bf4280d9f06710a6e8d7a831376
331
+ appraisal (2.5.0) sha256=36989221be127913b0dba8d114da2001e6b2dceea7bd4951200eaba764eed3ce
332
+ ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
333
+ base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
334
+ bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
335
+ builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
336
+ cable_ready (5.0.6) sha256=de1c94beab04b15a47c8794507a0b5d0ce9c0f25edb1b60a7542adc5413ea894
337
+ coderay (1.1.3) sha256=dc530018a4684512f8f38143cd2a096c9f02a1fc2459edcfe534787a7fc77d4b
338
+ concurrent-ruby (1.3.8) sha256=b2f1be836e968ccc78ccfce277ea79c72a88633f22306782c16ff23fb415d1e1
339
+ connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
340
+ crass (1.0.7) sha256=94868719948664c89ddcaf0a37c65048413dfcb1c869470a5f7a7ceb5390b295
341
+ cubism (0.2.2)
342
+ date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
343
+ drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
344
+ erb (6.0.7) sha256=c5ca6dc25b0ef974a44dc8f59fe847577122483b1968a38dec305c60bf91ee92
345
+ erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
346
+ globalid (1.4.0) sha256=037f12fbf1d9d7a014d501c2d5c77356fd4ddd96d7a7991d6700bba96706f427
347
+ i18n (1.15.2) sha256=00f9eb62412fe593b2a65a97daa75300d37abb8f7202ec748e94b6d46a9dd1b5
348
+ io-console (0.9.2) sha256=efa74f891dd03c0939a931dfc6e74c2813d904763d456ea9762b0525e748db08
349
+ irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3
350
+ json (2.21.2) sha256=1f1d3b7cf2b3ba1a69beca0bb6db13d5438b80bff3cd54cdaaa620b9b07c1c6a
351
+ kredis (1.8.0) sha256=34b72a0bc242d7aaea98e82b6a5a8c293a27e1b26f2c729a8d4e1e1409886150
352
+ language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0
353
+ lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
354
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
355
+ loofah (2.25.2) sha256=2007f746959ac65552456e04b433e83deb22759ab38c838b4445c70e43425918
356
+ mail (2.9.1) sha256=06574eca475253d6c18145dd70af80d0eb970182d55053497c5f4d797ea160e8
357
+ marcel (1.2.1) sha256=1678e9360e32f9eafa917c80029e2f6d10b2715c66a4b87b6d0da9b9cd1f859f
358
+ method_source (1.1.0) sha256=181301c9c45b731b4769bc81e8860e72f9161ad7d66dd99103c9ab84f560f5c5
359
+ mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
360
+ minitest (6.0.6) sha256=153ea36d1d987a62942382b61075745042a2b3123b1cd48f4c3675af9cc7d6f1
361
+ mocha (3.1.0) sha256=75f42d69ebfb1f10b32489dff8f8431d37a418120ecdfc07afe3bc183d4e1d56
362
+ net-imap (0.6.6) sha256=96aa4ee50df3060203e649efc341f53480b791d49e150f2fdebf68beb141a8df
363
+ net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3
364
+ net-protocol (0.3.0) sha256=ba310c3d4f1cad46bb1ab20336b06669b1ff8f7c568d9cb9342b32a718547472
365
+ net-smtp (0.5.1) sha256=ed96a0af63c524fceb4b29b0d352195c30d82dd916a42f03c62a3a70e5b70736
366
+ nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
367
+ nokogiri (1.19.4-aarch64-linux-gnu) sha256=1269fb644a6de405057a53dd5c762b1209b43ca7424f839454d3dbc677c31a8f
368
+ nokogiri (1.19.4-aarch64-linux-musl) sha256=35c65b9ce72b3bb03207bdbe7067915019dc18c1b9b59139684bd6690fdd01af
369
+ nokogiri (1.19.4-arm-linux-gnu) sha256=a301313e38bb065d68239e79734bcd6f56fb6efaacebde29e9abf2a4735340ca
370
+ nokogiri (1.19.4-arm-linux-musl) sha256=588923c101bcfa78869734d247d25b598674323e7f22474fc468f6e5647311eb
371
+ nokogiri (1.19.4-arm64-darwin) sha256=a46db9853286e6597b36ebc6953817d15acf3a299583eb3f89fdc6f91dd63527
372
+ nokogiri (1.19.4-x86_64-darwin) sha256=7fd17057d3e1f00e9954a74b3cd76595d3d4a5ef233b7ed9599047c204f70551
373
+ nokogiri (1.19.4-x86_64-linux-gnu) sha256=379fae440b28915e3f19d752ce2dcf8465ed2b2fbefd2a7ca0dd497bc981a06a
374
+ nokogiri (1.19.4-x86_64-linux-musl) sha256=17dfb7c1fa194ae02fbf7c51a7afc8d278045ab3fdacfd86f91d02d7b274470b
375
+ observer (0.1.2) sha256=d8a3107131ba661138d748e7be3dbafc0d82e732fffba9fccb3d7829880950ac
376
+ parallel (2.2.0) sha256=e1059c5fd7b649558a0aec38a769f06a42942bdb40503d005a59c352fe011cd8
377
+ parser (3.3.12.0) sha256=21a6d7f755d5a24dfbdc6e6b772e4e879a52e7631a88bc5a3a134606052c9828
378
+ pp (0.6.4) sha256=dfcb0fce700c41456265922884f9fe195d7fbb0674a3578e6c0f69588e82b570
379
+ prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
380
+ prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
381
+ pry (0.16.0) sha256=d76c69065698ed1f85e717bd33d7942c38a50868f6b0673c636192b3d1b6054e
382
+ racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
383
+ rack (3.2.7) sha256=93e13e1c24f93556671d85d2d79fa228c3485815c50d7e2f265b5330c6528fb7
384
+ rack-session (2.1.2) sha256=595434f8c0c3473ae7d7ac56ecda6cc6dfd9d37c0b2b5255330aa1576967ffe8
385
+ rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
386
+ rackup (2.3.1) sha256=6c79c26753778e90983761d677a48937ee3192b3ffef6bc963c0950f94688868
387
+ rails (8.1.3.1) sha256=ccd11a36bfc171bf9c66d585d14c0ece91c0c9dde840aae60c0118d6f5c9c52a
388
+ rails-dom-testing (2.3.0) sha256=8acc7953a7b911ca44588bf08737bc16719f431a1cc3091a292bca7317925c1d
389
+ rails-html-sanitizer (1.7.1) sha256=e797a7c9b01e567307e317c576b49ab4168017e63eea4dba9ce3cb587e2f22c2
390
+ railties (8.1.3.1) sha256=2388a232579a00cefea4487de66c8553c3408c1300abdc6cf1799d86ffb04487
391
+ rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
392
+ rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
393
+ rbs (4.2.0) sha256=51f7b886dcc05bc09e10b901daa6a81829f6adc03101d6ca9ea4aac6103e0674
394
+ rdoc (8.0.0) sha256=03bf8c08a9639658855a0cfd77c0abca8325c227693f7f33f82957811348c469
395
+ redis (5.4.1) sha256=b5e675b57ad22b15c9bcc765d5ac26f60b675408af916d31527af9bd5a81faae
396
+ redis-client (0.30.1) sha256=5151bc5c7bbfe48623732cdae3b900d8a22dc691cc7cdfacfb351ac55116522d
397
+ regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
398
+ reline (0.7.0) sha256=5b012d8e55dbf9d450f12bde2cf7d15ff546ae80b3f8f3b30e570d431815583d
399
+ rubocop (1.88.2) sha256=8def251c90cd955feb4daa3edc0ab56893250c4ce90ef81e6c80c03f9a939bbf
400
+ rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db
401
+ rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
402
+ ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
403
+ ruby2_keywords (0.0.5) sha256=ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef
404
+ securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
405
+ sqlite3 (2.9.6-aarch64-linux-gnu) sha256=d8b1f7d23efd7abac285775a9566562fc7debfef79d594e3a20354406fb7907c
406
+ sqlite3 (2.9.6-aarch64-linux-musl) sha256=3579e1c98cdc7ff5c3722847bb63ed4e1efb7ff675cb5e1e48ef2d4da5fb3bc9
407
+ sqlite3 (2.9.6-arm-linux-gnu) sha256=33541500e3615da02afe54a9cc38b17a6985d3cf9d8b76d6d0a83002f114e7ec
408
+ sqlite3 (2.9.6-arm-linux-musl) sha256=c5490af48bb228fefa54314e9541375c3907e70f8109f3881b5ff97e1c93ae33
409
+ sqlite3 (2.9.6-arm64-darwin) sha256=849b5d7f795e60fe25076d62c72dd722beb45b3850b516ad978d60ee848ec15b
410
+ sqlite3 (2.9.6-x86_64-darwin) sha256=b5842fea77781c14da03fa7bc0feb82db03a69e135affcb6f5399cbd2797a5f3
411
+ sqlite3 (2.9.6-x86_64-linux-gnu) sha256=613188ce02f614126ddbc38c5e217ccffd6306d0dcd9adca9764547aa890a634
412
+ sqlite3 (2.9.6-x86_64-linux-musl) sha256=d493b11818a3573387a1d56e1ee8fa00da23a683a7a1cc063e7a0feeed843abf
413
+ standard (1.56.0) sha256=ae2af4d9669589162ac69ed5ef59dcf9f346d4afc81f7e62b84339310dfcb787
414
+ standard-custom (1.0.2) sha256=424adc84179a074f1a2a309bb9cf7cd6bfdb2b6541f20c6bf9436c0ba22a652b
415
+ standard-performance (1.9.0) sha256=49483d31be448292951d80e5e67cdcb576c2502103c7b40aec6f1b6e9c88e3f2
416
+ thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
417
+ thread-local (1.1.0) sha256=2fb568d31f0ef278063f45a3923c5ed62ee5c33da8134103bc7d2ecdb87bd2e7
418
+ timeout (0.6.1) sha256=78f57368a7e7bbadec56971f78a3f5ecbcfb59b7fcbb0a3ed6ddc08a5094accb
419
+ tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
420
+ tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
421
+ unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
422
+ unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
423
+ uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
424
+ useragent (0.16.11) sha256=700e6413ad4bb954bb63547fa098dddf7b0ebe75b40cc6f93b8d54255b173844
425
+ websocket-driver (0.8.2) sha256=97c556b019bf3410b4961002ac501621e9322d3f8a7bc02161a09301cc4c4146
426
+ websocket-extensions (0.1.5) sha256=1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241
427
+ zeitwerk (2.8.3) sha256=2c85125a8467ce069e20123d1e709a08955c9d29c118c25b46b7b7fafdbb92e5
276
428
 
277
429
  BUNDLED WITH
278
- 2.3.3
430
+ 4.0.0
@@ -13,7 +13,9 @@ module CubismHelper
13
13
  block_variable_name = block.parameters.find { |type, _| [:req, :opt, :rest].include?(type) }&.last
14
14
  if block_variable_name.present?
15
15
  block_source.variable_name = block_variable_name.to_s
16
- Cubism.source_store[block_source.digest] = block_source
16
+ # Never write back a sourceless block source: it would replace a good
17
+ # store entry with one the broadcaster cannot render.
18
+ Cubism.source_store[block_source.digest] = block_source if block_source.source.present?
17
19
  end
18
20
  end
19
21
 
data/cubism.gemspec CHANGED
@@ -9,6 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.summary = "Lightweight Resource-Based Presence Solution with CableReady"
10
10
  spec.description = "Lightweight Resource-Based Presence Solution with CableReady"
11
11
  spec.license = "MIT"
12
+ spec.required_ruby_version = ">= 3.2"
12
13
 
13
14
  spec.metadata["homepage_uri"] = spec.homepage
14
15
  spec.metadata["source_code_uri"] = "https://github.com/julianrubisch/cubism.git"
@@ -22,14 +23,12 @@ Gem::Specification.new do |spec|
22
23
  "[A-Z]*"
23
24
  ]
24
25
 
25
- spec.test_files = Dir["test/**/*.rb"]
26
-
27
- spec.add_dependency "rails", ">= 6.0"
26
+ spec.add_dependency "rails", ">= 7.2"
28
27
  spec.add_dependency "kredis", ">= 0.4"
29
28
  spec.add_dependency "cable_ready", ">= 5.0.0"
30
29
  spec.add_dependency "observer"
31
30
 
32
- spec.add_development_dependency "standard"
31
+ spec.add_development_dependency "standard", ">= 1.35.1"
33
32
  spec.add_development_dependency "nokogiri"
34
33
  spec.add_development_dependency "mocha"
35
34
  spec.add_development_dependency "appraisal"
@@ -21,9 +21,13 @@ module Cubism
21
21
 
22
22
  block_source = block_container.block_source
23
23
 
24
- inline_source = block_source.source
25
- inline_source = inline_source.dup if inline_source.frozen?
26
- html = ApplicationController.render(inline: inline_source, locals: {"#{block_source.variable_name}": present_users})
24
+ # Blocks declared inside an inline template are never parsed, and the
25
+ # source store can be evicted independently of the block store. Without
26
+ # a source there is nothing to render, and `inline: nil` would raise
27
+ # deep inside ActionView (`nil.to_s` is frozen).
28
+ next if block_source.nil? || block_source.source.blank?
29
+
30
+ html = ApplicationController.render(inline: block_source.source, locals: {"#{block_source.variable_name}": present_users})
27
31
 
28
32
  selector = "cubicle-element#cubicle-#{element_id}[identifier='#{signed_stream_identifier(resource.to_global_id.to_s)}']"
29
33
 
@@ -99,9 +99,16 @@ module Cubism
99
99
  ) do
100
100
  def self.find_or_create(location:, view_context:)
101
101
  instance = new(location: location, view_context: view_context)
102
-
103
- Cubism.source_store.fetch(instance.digest, instance) do |instance|
102
+ stored = Cubism.source_store[instance.digest]
103
+
104
+ # A stored entry without a source is unusable downstream (the broadcaster
105
+ # would hand `inline: nil` to ActionView), so treat it as a miss and reparse.
106
+ if stored&.source.present?
107
+ instance.source = stored.source
108
+ instance.variable_name = stored.variable_name
109
+ else
104
110
  instance.parse!
111
+ Cubism.source_store[instance.digest] = instance
105
112
  end
106
113
 
107
114
  instance