turbo_power 0.4.0 → 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 +4 -4
- data/Gemfile.lock +1 -1
- data/app/jobs/turbo_power/streams/action_broadcast_job.rb +9 -0
- data/lib/turbo_power/broadcastable.rb +30 -0
- data/lib/turbo_power/broadcasts.rb +32 -0
- data/lib/turbo_power/engine.rb +9 -1
- data/lib/turbo_power/version.rb +1 -1
- data/lib/turbo_power.rb +2 -0
- metadata +5 -3
- data/CHANGELOG.md +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 678db176d816e2a22ddf77a35a42447fef3f823c956a69e5f107186c632dde36
|
4
|
+
data.tar.gz: c91240c7d009cf7ed54195d77de945c6a2cd013745673d47393a8a83305952fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e24d81bd1d2ef91938458dc7c2c2e1a109d9ff2d29336010b97e835d7a905f9ddf4163ac7d14887712c62d109751ca0b601cee24c9ae14f0cde376a6f3a75f30
|
7
|
+
data.tar.gz: cdf838e14aa5e3f7c9a9b9285ec0c5b58e96464bcf36b8826709b79551437814c0e074bcfa7343b4f7ee954ba8a565a43a932b4d4955744edf9b2cd022f661ae
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
# The job that powers all the <tt>custom_broadcast_$action_later</tt> broadcasts available in <tt>TurboPower::Broadcasts</tt>.
|
2
|
+
|
3
|
+
class TurboPower::Streams::ActionBroadcastJob < ActiveJob::Base
|
4
|
+
discard_on ActiveJob::DeserializationError
|
5
|
+
|
6
|
+
def perform(stream, action:, **attributes)
|
7
|
+
Turbo::StreamsChannel.custom_broadcast_action_to stream, action: action, **attributes
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TurboPower
|
4
|
+
module Broadcastable
|
5
|
+
ACTIONS = TurboPower::StreamHelper.instance_methods.sort
|
6
|
+
|
7
|
+
ACTIONS.each do |action|
|
8
|
+
action_name = "broadcast_#{action}"
|
9
|
+
action_name_to = "broadcast_#{action}_to"
|
10
|
+
action_name_later = "broadcast_#{action}_later"
|
11
|
+
action_name_later_to = "broadcast_#{action}_later_to"
|
12
|
+
|
13
|
+
define_method(action_name) do |**attributes|
|
14
|
+
Turbo::StreamsChannel.send(action_name_to, self, action: action, **attributes)
|
15
|
+
end
|
16
|
+
|
17
|
+
define_method(action_name_to) do |*streamables, **attributes|
|
18
|
+
Turbo::StreamsChannel.send(action_name_to, *streamables, action: action, **attributes)
|
19
|
+
end
|
20
|
+
|
21
|
+
define_method(action_name_later) do |**attributes|
|
22
|
+
Turbo::StreamsChannel.send(action_name_later_to, self, action: action, **attributes)
|
23
|
+
end
|
24
|
+
|
25
|
+
define_method(action_name_later_to) do |*streamables, **attributes|
|
26
|
+
Turbo::StreamsChannel.send(action_name_later_to, *streamables, action: action, **attributes)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TurboPower
|
4
|
+
module Broadcasts
|
5
|
+
ACTIONS = TurboPower::StreamHelper.instance_methods.sort
|
6
|
+
|
7
|
+
ACTIONS.each do |action|
|
8
|
+
define_method("broadcast_#{action}_to") do |*streamables, **attributes|
|
9
|
+
custom_broadcast_action_to(*streamables, action: action, **attributes)
|
10
|
+
end
|
11
|
+
|
12
|
+
define_method("broadcast_#{action}_later_to") do |*streamables, **attributes|
|
13
|
+
custom_broadcast_action_later_to(*streamables, action: action, **attributes)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def custom_broadcast_action_to(*streamables, action:, **attributes)
|
18
|
+
broadcast_stream_to(
|
19
|
+
*streamables,
|
20
|
+
content: turbo_stream_action_tag(action, **attributes)
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
def custom_broadcast_action_later_to(*streamables, action:, **attributes)
|
25
|
+
TurboPower::Streams::ActionBroadcastJob.perform_later(
|
26
|
+
stream_name_from(streamables),
|
27
|
+
action: action,
|
28
|
+
**attributes
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/turbo_power/engine.rb
CHANGED
@@ -4,8 +4,16 @@ require "rails/engine"
|
|
4
4
|
|
5
5
|
module TurboPower
|
6
6
|
class Engine < Rails::Engine
|
7
|
-
initializer "turbo_power.
|
7
|
+
initializer "turbo_power.stream_helpers", after: :initialize do
|
8
8
|
Turbo::Streams::TagBuilder.include(TurboPower::StreamHelper)
|
9
9
|
end
|
10
|
+
|
11
|
+
initializer "turbo_power.broadcasts", after: :initialize do
|
12
|
+
Turbo::Streams::Broadcasts.include(TurboPower::Broadcasts)
|
13
|
+
end
|
14
|
+
|
15
|
+
initializer "turbo_power.broadcastable", after: :initialize do
|
16
|
+
Turbo::Broadcastable.include(TurboPower::Broadcastable)
|
17
|
+
end
|
10
18
|
end
|
11
19
|
end
|
data/lib/turbo_power/version.rb
CHANGED
data/lib/turbo_power.rb
CHANGED
@@ -6,6 +6,8 @@ require_relative "turbo_power/version"
|
|
6
6
|
require_relative "turbo_power/engine"
|
7
7
|
require_relative "turbo_power/attribute_transformations"
|
8
8
|
require_relative "turbo_power/stream_helper"
|
9
|
+
require_relative "turbo_power/broadcasts"
|
10
|
+
require_relative "turbo_power/broadcastable"
|
9
11
|
|
10
12
|
module TurboPower
|
11
13
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turbo_power
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marco Roth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: turbo-rails
|
@@ -31,17 +31,19 @@ executables: []
|
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
-
- CHANGELOG.md
|
35
34
|
- CODE_OF_CONDUCT.md
|
36
35
|
- Gemfile
|
37
36
|
- Gemfile.lock
|
38
37
|
- LICENSE.txt
|
39
38
|
- README.md
|
40
39
|
- Rakefile
|
40
|
+
- app/jobs/turbo_power/streams/action_broadcast_job.rb
|
41
41
|
- bin/console
|
42
42
|
- bin/setup
|
43
43
|
- lib/turbo_power.rb
|
44
44
|
- lib/turbo_power/attribute_transformations.rb
|
45
|
+
- lib/turbo_power/broadcastable.rb
|
46
|
+
- lib/turbo_power/broadcasts.rb
|
45
47
|
- lib/turbo_power/engine.rb
|
46
48
|
- lib/turbo_power/stream_helper.rb
|
47
49
|
- lib/turbo_power/version.rb
|