isimud 0.7.0 → 1.3.1

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +1 -2
  4. data/.ruby-version +1 -1
  5. data/.yardoc/checksums +10 -10
  6. data/.yardoc/object_types +0 -0
  7. data/.yardoc/objects/root.dat +0 -0
  8. data/Gemfile +2 -1
  9. data/Gemfile.lock +63 -73
  10. data/LICENSE.txt +19 -0
  11. data/README.md +51 -3
  12. data/Rakefile +5 -0
  13. data/doc/Isimud/BunnyClient.html +882 -179
  14. data/doc/Isimud/Client.html +236 -18
  15. data/doc/Isimud/Event.html +211 -95
  16. data/doc/Isimud/EventListener.html +325 -307
  17. data/doc/Isimud/EventObserver/ClassMethods.html +14 -14
  18. data/doc/Isimud/EventObserver.html +418 -36
  19. data/doc/Isimud/Generators/ConfigGenerator.html +2 -2
  20. data/doc/Isimud/Generators/InitializerGenerator.html +2 -2
  21. data/doc/Isimud/Generators.html +2 -2
  22. data/doc/Isimud/Logging.html +3 -3
  23. data/doc/Isimud/ModelWatcher/ClassMethods.html +3 -3
  24. data/doc/Isimud/ModelWatcher.html +2 -2
  25. data/doc/Isimud/Railtie.html +2 -2
  26. data/doc/Isimud/TestClient/Queue.html +374 -71
  27. data/doc/Isimud/TestClient.html +169 -161
  28. data/doc/Isimud.html +80 -76
  29. data/doc/_index.html +5 -2
  30. data/doc/file.LICENSE.html +73 -0
  31. data/doc/file.README.html +131 -7
  32. data/doc/file_list.html +3 -0
  33. data/doc/index.html +131 -7
  34. data/doc/method_list.html +183 -105
  35. data/doc/top-level-namespace.html +2 -2
  36. data/isimud.gemspec +18 -16
  37. data/lib/isimud/bunny_client.rb +85 -32
  38. data/lib/isimud/client.rb +23 -7
  39. data/lib/isimud/event.rb +11 -14
  40. data/lib/isimud/event_listener.rb +123 -65
  41. data/lib/isimud/event_observer.rb +70 -10
  42. data/lib/isimud/model_watcher.rb +1 -1
  43. data/lib/isimud/test_client.rb +54 -26
  44. data/lib/isimud/version.rb +1 -1
  45. data/lib/isimud.rb +1 -1
  46. data/spec/internal/app/models/company.rb +8 -10
  47. data/spec/internal/app/models/user.rb +11 -1
  48. data/spec/internal/db/schema.rb +5 -0
  49. data/spec/isimud/bunny_client_spec.rb +21 -9
  50. data/spec/isimud/client_spec.rb +40 -0
  51. data/spec/isimud/event_listener_spec.rb +50 -22
  52. data/spec/isimud/event_observer_spec.rb +107 -16
  53. data/spec/isimud/model_watcher_spec.rb +18 -23
  54. data/spec/isimud/test_client_spec.rb +43 -8
  55. data/spec/isimud_spec.rb +2 -2
  56. data/spec/spec_helper.rb +2 -0
  57. metadata +19 -35
  58. checksums.yaml.gz.sig +0 -0
  59. data/certs/gfeil.pem +0 -21
  60. data/release +0 -31
  61. data.tar.gz.sig +0 -0
  62. metadata.gz.sig +0 -2
data/doc/index.html CHANGED
@@ -62,7 +62,7 @@
62
62
  <iframe id="search_frame"></iframe>
63
63
 
64
64
  <div id="content"><div id='filecontents'>
65
- <h1 id="label-Isimud-3A+AMQP+based+Messaging+abstraction+component.">Isimud: AMQP based Messaging abstraction component.</h1>
65
+ <h1 id="label-Isimud-3A+AMQP+based+Messaging+and+Event+Processing+Abstraction+Component.">Isimud: AMQP based Messaging and Event Processing Abstraction Component.</h1>
66
66
 
67
67
  <blockquote>
68
68
  <p>Isimud is a minor god, the messenger of the god Enki in Sumerian mythology.
@@ -87,7 +87,8 @@ whenever an ActiveRecord instance is created, modified, or destroyed.</p>
87
87
  <p>An Event Observer mixin for registering ActiveRecord models and instances
88
88
  with the EventListener for receiving messages.</p>
89
89
  </li><li>
90
- <p>An Event Listener daemon process which manages queues for Event Observers.</p>
90
+ <p>An Event Listener daemon process which manages queues and dispatches
91
+ messages for Event Observers.</p>
91
92
  </li></ul>
92
93
 
93
94
  <h2 id="label-Installation">Installation</h2>
@@ -161,9 +162,132 @@ messages. Named queues are automatically created if they do not exist.</p>
161
162
 
162
163
  <h2 id="label-Changes">Changes</h2>
163
164
 
164
- <h3 id="label-0.4.2">0.4.2</h3>
165
+ <h3 id="label-1.3.1">1.3.1</h3>
165
166
  <ul><li>
166
- <p>Fixed issue with exception handling</p>
167
+ <p>Add EventObserver#deactivate_observer to trigger queue deletion for an
168
+ observer instance.</p>
169
+ </li></ul>
170
+
171
+ <h3 id="label-1.3.0">1.3.0</h3>
172
+ <ul><li>
173
+ <p>Added a new method, EventListener#bind_event_queues() for registering
174
+ custom event handlers. Override this method instead of bind_queues() to
175
+ bind custom queues not handled by EventObserver instances.</p>
176
+ </li><li>
177
+ <p>Add local host name to the EventListener observer queue to avoid possible
178
+ collisions caused by processes on different hosts sharing the same PID.</p>
179
+ </li><li>
180
+ <p>Added lots of documentation.</p>
181
+ </li></ul>
182
+
183
+ <h3 id="label-1.2.1">1.2.1</h3>
184
+ <ul><li>
185
+ <p>Include attributes in ModelWatcher destroy message</p>
186
+ </li></ul>
187
+
188
+ <h3 id="label-1.2.0">1.2.0</h3>
189
+ <ul><li>
190
+ <p>EventObserver#update_queue now always binds current routing keys. This
191
+ ensures that when an enable_listener? changes state from false to true
192
+ during an update, all bindings for the queue are established.</p>
193
+ </li><li>
194
+ <p>Add EventObserver#activate_observer(), which creates and binds a queue for
195
+ an observer instance on demand.</p>
196
+ </li><li>
197
+ <p>Add declaration for Client#find_queue, and normalize the method signature
198
+ for subclasses.</p>
199
+ </li></ul>
200
+
201
+ <h3 id="label-1.1.0">1.1.0</h3>
202
+ <ul><li>
203
+ <p>Clients now support multiple exception handlers. Each call to
204
+ Client#on_exception will add a new block to the exception handlers list</p>
205
+ </li></ul>
206
+
207
+ <h3 id="label-1.0.2">1.0.2</h3>
208
+
209
+ <h4 id="label-Breaking+Changes-3A">Breaking Changes:</h4>
210
+ <ul><li>
211
+ <p>EventObserver instances are now required to have the persistent attribute
212
+ /exchange_routing_keys/. These are used to store the current value of
213
+ routing keys assoicated with an instance. The queue associated with an
214
+ EventObserver is now created and updated at the same time the
215
+ EventObserver is updated, rather than relying on the EventListener to
216
+ create it.</p>
217
+ </li><li>
218
+ <p>EventObserver#observe_events now has only one parameter, the Isimud::Client
219
+ instance. No queue bindings are done within this method.</p>
220
+ </li><li>
221
+ <p>Client#bind has been refactored in order to separate concerns. A new
222
+ method, #subscribe, is now used for subscribing to messages by linking a
223
+ Proc.</p>
224
+ </li><li>
225
+ <p>Client#create_queue no longer accepts a block parameter and does not
226
+ subscribe to messages.</p>
227
+ </li><li>
228
+ <p>Removed Client#rebind.</p>
229
+ </li></ul>
230
+
231
+ <h4 id="label-Other+Changes-3A">Other Changes:</h4>
232
+ <ul><li>
233
+ <p>TestClient::Queue now responds to bind() and unbind() in the same manner as
234
+ Bunny::Queue.</p>
235
+ </li><li>
236
+ <p>BunnyClient#create_queue now may be called without a block to instantiate
237
+ an AMQP queue without subscribing to messages</p>
238
+ </li></ul>
239
+
240
+ <h3 id="label-0.6.0+-28broken-29">0.6.0 (broken)</h3>
241
+ <ul><li>
242
+ <p>Added Client#rebind to change the exchange and routing keys for a durable
243
+ named queue.</p>
244
+ </li><li>
245
+ <p>Changed BunnyClient#delete_queue to make it more reliable.</p>
246
+ </li><li>
247
+ <p>EventListener now uses a shared, durable queue for monitoring events on
248
+ modified EventObserver instances.</p>
249
+ </li></ul>
250
+
251
+ <h3 id="label-0.5.2">0.5.2</h3>
252
+ <ul><li>
253
+ <p>Fixed regexp bug in TestClient affecting message delivery</p>
254
+ </li><li>
255
+ <p>Add more logging for EventObserver binding</p>
256
+ </li></ul>
257
+
258
+ <h3 id="label-0.5.1">0.5.1</h3>
259
+ <ul><li>
260
+ <p>Added Event#attributes</p>
261
+ </li></ul>
262
+
263
+ <h3 id="label-0.5.0">0.5.0</h3>
264
+ <ul><li>
265
+ <p>Allow EventObserver classes to override the exchange for listening to
266
+ events</p>
267
+ </li><li>
268
+ <p>Corrected initialization of EventListener for handling defaults</p>
269
+ </li><li>
270
+ <p>Create an explicit name for EventListener model queues for EventObserver
271
+ instances</p>
272
+ </li><li>
273
+ <p>Fixed a bug in EventObserver that caused ModelWatcher to not send update
274
+ events appropriately when default columns are watched</p>
275
+ </li><li>
276
+ <p>Moved requires for Isimud below config attribute declarations</p>
277
+ </li></ul>
278
+
279
+ <h3 id="label-0.4.10">0.4.10</h3>
280
+ <ul><li>
281
+ <p>Corrected trap of INT and TERM signals</p>
282
+ </li><li>
283
+ <p>Added error counter mutex and cleaned up logging</p>
284
+ </li><li>
285
+ <p>Corrected race condition for registering EventObserver classes</p>
286
+ </li></ul>
287
+
288
+ <h3 id="label-0.4.5">0.4.5</h3>
289
+ <ul><li>
290
+ <p>Fixed issues with exception handling</p>
167
291
  </li></ul>
168
292
 
169
293
  <h3 id="label-0.4.1">0.4.1</h3>
@@ -314,7 +438,7 @@ synchronization. Override to activate.</p>
314
438
  <h2 id="label-Contributing">Contributing</h2>
315
439
  <ol><li>
316
440
  <p>Fork it ( <a
317
- href="https://github.com/[my-github-username]/isimud/fork">github.com/[my-github-username]/isimud/fork</a>
441
+ href="https://github.com/KeasInc/isimud/fork">github.com/KeasInc/isimud/fork</a>
318
442
  )</p>
319
443
  </li><li>
320
444
  <p>Create your feature branch (<code>git checkout -b my-new-feature</code>)</p>
@@ -329,9 +453,9 @@ feature&#39;</code>)</p>
329
453
  </div></div>
330
454
 
331
455
  <div id="footer">
332
- Generated on Fri Apr 3 09:28:08 2015 by
456
+ Generated on Wed Jan 13 16:27:28 2016 by
333
457
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
334
- 0.8.7.6 (ruby-2.2.1).
458
+ 0.8.7.6 (ruby-2.2.3).
335
459
  </div>
336
460
 
337
461
  </body>