railjet-bus 1.0 → 1.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 +4 -4
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/lib/railjet/bus/version.rb +1 -1
- data/lib/railjet/bus.rb +52 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc738a24deb19984756e64ac67da77cc9a745485
|
4
|
+
data.tar.gz: bd1166edeb6eefafabf3b4d3aadc6203926efb82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 724e45aeb16d33534055a035a819124bc58c1200daf7b569dd381936e45fdbaa08760767f86e02e1c600d769ddb473fe10da09a33078b87f9321ba27df87669e
|
7
|
+
data.tar.gz: d51f4b24be4d18379a5e0236b44d6426306e84459d17bd5c9b8e59c8e00bb4e84c8e2aa8b934c10d2a1d67848e852324c0650dfcdccd96bc291d4fcf3701d3cb
|
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.1.0
|
data/lib/railjet/bus/version.rb
CHANGED
data/lib/railjet/bus.rb
CHANGED
@@ -28,8 +28,60 @@ module Railjet
|
|
28
28
|
bus.subscribe(subscriber, on: event, prefix: true, async: true)
|
29
29
|
end
|
30
30
|
|
31
|
+
def subscribe_listener(listener)
|
32
|
+
listener.subscriptions.each do |event|
|
33
|
+
subscribe(event, listener)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
31
37
|
private
|
32
38
|
|
33
39
|
attr_reader :bus
|
34
40
|
end
|
41
|
+
|
42
|
+
class Listener
|
43
|
+
include Railjet::Util::UseCaseHelper
|
44
|
+
|
45
|
+
class << self
|
46
|
+
def subscriptions
|
47
|
+
@subscriptions ||= []
|
48
|
+
end
|
49
|
+
|
50
|
+
def listen_to(event, &block)
|
51
|
+
subscriptions << event
|
52
|
+
define_listeners(event, &block)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def define_listeners(event, &block)
|
58
|
+
define_listener(event, &block)
|
59
|
+
define_listener_caller(event)
|
60
|
+
end
|
61
|
+
|
62
|
+
def define_listener(event, &block)
|
63
|
+
define_method listener_name(event) do |**kwargs|
|
64
|
+
around_listener(event, kwargs) { |args| instance_exec(args, &block) }
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def define_listener_caller(event)
|
69
|
+
name = listener_name(event)
|
70
|
+
define_singleton_method name do |**kwargs|
|
71
|
+
new.public_send(name, **kwargs)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def listener_name(event)
|
76
|
+
"on_#{event}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# This around block does nothing
|
81
|
+
# but it's there as point of extensions so it could be easily overridden in
|
82
|
+
# sub-class if some additional setup is needed
|
83
|
+
def around_listener(event, **kwargs)
|
84
|
+
yield(**kwargs)
|
85
|
+
end
|
86
|
+
end
|
35
87
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: railjet-bus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Krzysztof Zalewski
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railjet
|