render_turbo_stream 2.0.3 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '087b5154db888a207a6396af1e508245b50e652513ad89be3b048f3951578398'
|
4
|
+
data.tar.gz: c54c8bd50712af73d95f75d614e46a2ff15346b50b95dfbc8a2294b341978fa2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69fd9f948bcc9e4b2c7f4a252f0958667a9cf8876b8185f307f02325f295f4023096d4991b0fa5b1f0648fb34074d9102d5741cbed5a52c09c0bb5d5b81b5043
|
7
|
+
data.tar.gz: e2ebc9166c0ec6a5e37d7d8d574b42345fb7f1429dfed8026c295963fe47b5fd21913c048f2164897e2a974ee33e6254590814b5392728a9836ce81fc823701d
|
data/README.md
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
# RenderTurboStream
|
2
2
|
|
3
|
-
Defining templates like `(create|update).turbo_stream.haml` annoyed me
|
3
|
+
Defining templates like `(create|update).turbo_stream.haml` annoyed me.
|
4
4
|
|
5
|
-
|
5
|
+
Turbo has seamlessly integrated Action Cable. The intention here is to bring it all together in a unified workflow with a sufficient testing strategy.
|
6
6
|
|
7
|
-
|
7
|
+
Working consistently with turbo_stream or Turbo Streams Channel means shooting a lot of partials from the backend to the frontend. This always requires the same attributes: the path to the partial, the html id that turbo_stream points to, and maybe some locals, and maybe generate a translated flash message for update or create actions. All this can be done in one step directly from the controller.
|
8
8
|
|
9
|
-
|
9
|
+
There are many ways and tedious details to handle redirects since Turbo! Below described are options.
|
10
|
+
|
11
|
+
Execute [turbo_power](https://github.com/marcoroth/turbo_power) commands, such as adding a css class to an html element, pushing a state to the browser history, or running custom javascript actions through Turbo Stream (cable not yet integrated here) can be written in pure ruby code. No need for embeds like `.html.erb`.
|
12
|
+
|
13
|
+
This plugin is in a early state.
|
10
14
|
|
11
15
|
An overview of how we design a rails-7 application with turbo
|
12
16
|
is [published on dev.to](https://dev.to/chmich/rails-7-vite-wrapping-up-1pia).
|
@@ -15,6 +19,8 @@ A quick and dirty application with all the features, including tests, built in i
|
|
15
19
|
|
16
20
|
Hope it can help you.
|
17
21
|
|
22
|
+
**Chris**
|
23
|
+
|
18
24
|
## Installation
|
19
25
|
|
20
26
|
```ruby
|
@@ -76,7 +82,7 @@ A comprehensive tutorial on turbo and how to check that it is working properly c
|
|
76
82
|
**Turbo::StreamsChannel**
|
77
83
|
|
78
84
|
The Rails team has seamlessly integrated `ActionCable` as `Turbo::StreamsChannel` into `Turbo Rails`. For installation along with this gem, see the [README](https://gitlab.com/sedl/renderturbostream/-/blob/main/README-cable.md).
|
79
|
-
|
85
|
+
# Usage
|
80
86
|
|
81
87
|
`turbo_stream_save` is a special method for streamlining `update` or `create` functions with `turbo_stream`. A controller action for update might look like this:
|
82
88
|
|
@@ -207,7 +213,7 @@ def update
|
|
207
213
|
flashes_on_error: [] #=> array of strings
|
208
214
|
|
209
215
|
|
210
|
-
|
216
|
+
# Testing Scenarios
|
211
217
|
|
212
218
|
For system testing there is Capybara. Its the only way to check if frontend and backend work together. But its a good practice to break tests into smaller pieces. The much larger number of tests we will write on the much faster request tests, examples here in rspec.
|
213
219
|
|
@@ -288,7 +294,7 @@ For more detailed testing of partials, there are view tests.
|
|
288
294
|
Testing the plugin itself: There is a [quick-and-dirty app](https://gitlab.com/sedl/renderturbostream_railsapp) which
|
289
295
|
includes the plugin and has tests done by rspec/request and capybara.
|
290
296
|
|
291
|
-
|
297
|
+
# More Configs
|
292
298
|
|
293
299
|
On test helpers, the marker for a turbo-stream target is in most cases the id of the target element. This is true for the standard turbo-stream functions. On `turbo_power` it is the same in most cases. `RenderTurboStream::Libs.first_arg_is_html_id()` checks for which methods this is true. You can override this:
|
294
300
|
|
@@ -299,14 +305,14 @@ config.x.render_turbo_stream.first_argument_is_html_id = %[replace append prepen
|
|
299
305
|
This setting is relevant for testing helpers.
|
300
306
|
|
301
307
|
|
302
|
-
|
308
|
+
# Contributing
|
303
309
|
|
304
310
|
Contribution welcome.
|
305
311
|
|
306
|
-
|
312
|
+
# License
|
307
313
|
|
308
314
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
309
315
|
|
310
|
-
|
316
|
+
# Thanks
|
311
317
|
|
312
318
|
Thanks to Marco Roth for turbo_power and thanks to DHH and the rails team for taking a bold new step by creating turbo.
|
@@ -1,14 +1,14 @@
|
|
1
1
|
module RenderTurboStream
|
2
2
|
module TurboCableHelpers
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
#
|
8
|
-
# end
|
9
|
-
# end
|
4
|
+
def partial_to_all_authenticated_users
|
5
|
+
raise "Function partial_to_all_authenticated_users is not yet implemented"
|
6
|
+
if user_signed_in?
|
10
7
|
|
11
|
-
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def partial_to_channel(action, channel, partial, id, locals: nil)
|
12
12
|
|
13
13
|
# add headers for test
|
14
14
|
if Rails.env.test?
|
@@ -45,22 +45,22 @@ module RenderTurboStream
|
|
45
45
|
)
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
48
|
+
def partial_to_me(partial, id, action: :replace, locals: nil)
|
49
49
|
begin
|
50
50
|
u_id = helpers.current_user&.id
|
51
51
|
a=1
|
52
52
|
unless u_id.present?
|
53
|
-
Rails.logger.debug(' • SKIP RenderTurboStream.
|
53
|
+
Rails.logger.debug(' • SKIP RenderTurboStream.partial_to_me because current_user is nil')
|
54
54
|
return
|
55
55
|
end
|
56
56
|
rescue
|
57
|
-
Rails.logger.debug(' • ERROR RenderTurboStream.
|
57
|
+
Rails.logger.debug(' • ERROR RenderTurboStream.partial_to_me because current_user is not available')
|
58
58
|
return
|
59
59
|
end
|
60
60
|
|
61
|
-
|
61
|
+
partial_to_channel(
|
62
62
|
action,
|
63
|
-
"
|
63
|
+
"authenticated-user-#{helpers.current_user.id}",
|
64
64
|
partial,
|
65
65
|
id,
|
66
66
|
locals: locals
|
@@ -3,19 +3,20 @@ module RenderTurboStream
|
|
3
3
|
|
4
4
|
def cable_from_me
|
5
5
|
if current_user
|
6
|
-
turbo_stream_from "
|
6
|
+
turbo_stream_from "authenticated-user-#{current_user.id}"
|
7
7
|
else
|
8
8
|
Rails.logger.debug(" • SKIP CABLE_FROM_ME because not authenticated")
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
def cable_from_all_authenticated_users
|
13
|
+
raise "Function cable_from_all_authenticated_users is not yet implemented"
|
14
|
+
if user_signed_in?
|
15
|
+
turbo_stream_from "all-authenticated-users"
|
16
|
+
else
|
17
|
+
Rails.logger.debug(" • SKIP CABLE_FROM_ALL_AUTHENTICATED_USERS because not authenticated")
|
18
|
+
end
|
19
|
+
end
|
19
20
|
|
20
21
|
def cable_from_all
|
21
22
|
turbo_stream_from "all"
|
data/lib/render_turbo_stream.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: render_turbo_stream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- christian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -27,8 +27,8 @@ dependencies:
|
|
27
27
|
description: Handles translated flash messages, sets status and renders partials via
|
28
28
|
Turbo Stream or Turbo::StreamsChannel directly from the controller. No need to write
|
29
29
|
*.turbo_stream.* templates. Together with the turbo_power gem or custom turbo_stream
|
30
|
-
actions,
|
31
|
-
ways.
|
30
|
+
actions, it can run javascript. Redirects can be handled easily and in multiple
|
31
|
+
ways. Through request testing helpers, this allows for consistent testing strategy.
|
32
32
|
email:
|
33
33
|
- christian@sedlmair.ch
|
34
34
|
executables: []
|