resugan 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +66 -0
- data/lib/resugan/context.rb +8 -0
- data/lib/resugan/kernel.rb +9 -0
- data/lib/resugan/object.rb +4 -0
- data/lib/resugan/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b0da82adc30cfab65fae130355e751f37aaa0ec
|
4
|
+
data.tar.gz: ba8ca7543faf7d229e11a986f0376ce65b4a880b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f15686a8c362eb7206e3160517026ceb5d7a29ef1155ae8c863319524ee2e1713b22d7d9621d5b885b6046ff9ce2f18e5682ccc72de3214d62c5f3be92777b6
|
7
|
+
data.tar.gz: b6a4838b230915d920ff92c9814f7e8ec8cd4b35ffe6f275d38a2ac0b211c4cafef897124868141de5c9fb198f4b0f3e920772b1c4870a5154b358db5e822253
|
data/README.md
CHANGED
@@ -59,6 +59,37 @@ hello! someone said hay!
|
|
59
59
|
Note that your listener will be executed once even if an event has been fired
|
60
60
|
multiple times. However params will contain the payload of both events. This allows you to batch together requests and efficiently dispatch them as a group.
|
61
61
|
|
62
|
+
# Object helpers
|
63
|
+
|
64
|
+
Helpers are available to make listening firing events a little bit cleaner:
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
class TestObject
|
68
|
+
include Resugan::ObjectHelpers
|
69
|
+
end
|
70
|
+
```
|
71
|
+
|
72
|
+
This basically allows for the attach_hook to be available
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
class TestObject
|
76
|
+
include Resugan::ObjectHelpers
|
77
|
+
|
78
|
+
def method2
|
79
|
+
_fire :event1
|
80
|
+
end
|
81
|
+
|
82
|
+
def method3
|
83
|
+
_fire :event2, param1: "hello"
|
84
|
+
end
|
85
|
+
|
86
|
+
attach_hook :method2
|
87
|
+
attach_hook :method3, namespace: "namespace1"
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
91
|
+
What this does is it essentially wraps the specified methods inside a resugan block.
|
92
|
+
|
62
93
|
Please see spec/resugan_spec.rb for more examples and details.
|
63
94
|
|
64
95
|
## namespaces
|
@@ -115,6 +146,41 @@ Or assign it to a specific namespace:
|
|
115
146
|
Resugan::Kernel.register_dispatcher(MyCustomerDispatcher, 'CustomGroup')
|
116
147
|
```
|
117
148
|
|
149
|
+
## Debugging
|
150
|
+
|
151
|
+
Sometimes you need to track where events are fired. You can do so by enabling line tracing:
|
152
|
+
|
153
|
+
```ruby
|
154
|
+
Resugan::Kernel.enable_line_trace true
|
155
|
+
```
|
156
|
+
|
157
|
+
Line source should now be passed as params everytime you fire an event. You can also
|
158
|
+
view it by dumping a resugan context.
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
puts resugan {
|
162
|
+
_fire :event1
|
163
|
+
}.dump
|
164
|
+
```
|
165
|
+
|
166
|
+
```ruby
|
167
|
+
{:event1=>[{:params=>{:_source=>"/Users/jedld/workspace/resugan/spec/resugan_spec.rb:144:in `block (5 levels) in <top (required)>'"}}]}
|
168
|
+
```
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
## Related Projects
|
173
|
+
|
174
|
+
Below are projects that extend resugan.
|
175
|
+
|
176
|
+
Resugan Worker
|
177
|
+
--------------
|
178
|
+
|
179
|
+
A project that wraps resugan listeners to be consumed using an external worker.
|
180
|
+
Can also be used as a sample on how to extend resugan.
|
181
|
+
|
182
|
+
https://github.com/jedld/resugan-worker
|
183
|
+
|
118
184
|
## Development
|
119
185
|
|
120
186
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/resugan/context.rb
CHANGED
@@ -5,6 +5,10 @@ module Resugan
|
|
5
5
|
@events = {}
|
6
6
|
end
|
7
7
|
|
8
|
+
def namespace
|
9
|
+
@namespace
|
10
|
+
end
|
11
|
+
|
8
12
|
def register(event, params = {})
|
9
13
|
event = event.to_sym
|
10
14
|
payload = { params: params }
|
@@ -19,5 +23,9 @@ module Resugan
|
|
19
23
|
dispatcher = Resugan::Kernel.dispatcher_for(@namespace)
|
20
24
|
dispatcher.dispatch(@namespace, @events)
|
21
25
|
end
|
26
|
+
|
27
|
+
def dump
|
28
|
+
@events
|
29
|
+
end
|
22
30
|
end
|
23
31
|
end
|
data/lib/resugan/kernel.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
module Resugan
|
2
2
|
class Kernel
|
3
|
+
# flag to log the line source where a fire was executed
|
4
|
+
def self.enable_line_trace(enable)
|
5
|
+
@enable = enable
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.line_trace_enabled?
|
9
|
+
@enable || false
|
10
|
+
end
|
11
|
+
|
3
12
|
def self.set_default_dispatcher(dispatcher)
|
4
13
|
@default_dispatcher ||= dispatcher.new
|
5
14
|
end
|
data/lib/resugan/object.rb
CHANGED
@@ -7,9 +7,13 @@ class Object
|
|
7
7
|
|
8
8
|
context = current_thread.pop_resugan_context
|
9
9
|
context.invoke
|
10
|
+
|
11
|
+
context
|
10
12
|
end
|
11
13
|
|
12
14
|
def _fire(event, params = {})
|
15
|
+
params[:_source] = caller[0] if Resugan::Kernel.line_trace_enabled?
|
16
|
+
|
13
17
|
current_thread = Thread.current
|
14
18
|
if current_thread.resugan_context
|
15
19
|
current_thread.resugan_context.register(event, params)
|
data/lib/resugan/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resugan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joseph Emmanuel Dayo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
113
|
version: '0'
|
114
114
|
requirements: []
|
115
115
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.
|
116
|
+
rubygems_version: 2.5.1
|
117
117
|
signing_key:
|
118
118
|
specification_version: 4
|
119
119
|
summary: simple, powerful and unobstrusive event framework for ruby
|