safubot 0.0.2 → 0.0.3

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.
@@ -1,9 +1,9 @@
1
1
  lib/safubot.rb da2c6f1fa7e7a17064469e0a5409f5dc2a6ec7ab
2
- lib/safubot/bot.rb a191fb9b972ebf19e4badc110658b64bb02f92ff
3
- lib/safubot/log.rb 132a7d9090c8c405b409fa12868244eb8de7b15a
4
- lib/safubot/xmpp.rb 50b683fbfcaef60d07102dd893df0a277c110f89
5
- lib/safubot/evented.rb 87b6fba0d6e65e5abf09e7606e1fd502713da2e7
2
+ lib/safubot/bot.rb 91a9512ec77a70a4a3bf3d1235d81f546cae7765
3
+ lib/safubot/log.rb c341c5e6a54a908ee8431b5aac2aa7c3472eaeed
4
+ lib/safubot/xmpp.rb 253c1ef4b93f85f4cfd55d8fb561984eb1bcf151
5
+ lib/safubot/evented.rb 8e90ab5b812eb12113095a8bdde7a96ba0e62d1f
6
6
  lib/safubot/version.rb 67c555f319499e0bcc596a73152df9f0797da190
7
- lib/safubot/twitter.rb 4574d47793303bc087f14b7c4bc7b5f0e7c938c7
8
- lib/safubot/known_user.rb 06960025ae9bf08570ab743f64a7b22ac1687542
9
- lib/safubot/test_helper.rb 870fe48e4efd009690b8cd8f29203491610ca8bb
7
+ lib/safubot/twitter.rb 414b3cabef1611923f18d779d279ce0b6f3128b8
8
+ lib/safubot/known_user.rb 8e2ce383a220c28d8729540be7fc0dfeca3f48fc
9
+ lib/safubot/test_helper.rb 892633f1707378964059f7209da7771669fdb993
Binary file
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # safubot - an evented chatbot framework for Ruby
1
+ # safubot - an event-driven chatbot framework for Ruby
2
2
 
3
3
  ## <a name="overview">Overview</a>
4
4
  Safubot is a chatbot framework for Twitter and XMPP which aims to abstract away the idiosyncracies of the underlying APIs, allowing you to focus on writing request-processing logic. Of course, if you want to use service-specific features (such as responding to timeline tweets) it lets you do that too!
@@ -62,10 +62,15 @@ Safubot uses [MongoDB](http://www.mongodb.org) for storage. It's [easy to instal
62
62
  end
63
63
  end
64
64
 
65
- # You can run this from inside another EventMachine loop if
66
- # you don't want it to block indefinitely.
65
+ # This will fork the Twitter/XMPP streaming processes as needed
66
+ # and then wait for them. You can call run_nowait if you want
67
+ # a non-blocking form.
67
68
  NiftyBot.new.run
68
69
 
70
+ ## <a name="logging">Logging</a>
71
+ Safubot::Log behaves as a Logger instance and will write to stdout by default. You can also tell it to write to a file:
72
+ Safubot::Log.path = "/some/cool/logfile"
73
+
69
74
  ## <a name="example">Specific Examples</a>
70
75
 
71
76
  ### Find the last processed request from a user
@@ -86,7 +91,7 @@ Safubot uses [MongoDB](http://www.mongodb.org) for storage. It's [easy to instal
86
91
  end
87
92
  end
88
93
 
89
- ### Start an unprompted conversation with an XMPP user.
94
+ ### Start an unprompted conversation with an XMPP user
90
95
 
91
96
  @xmpp.on(:ready) do
92
97
  @xmpp.tell('^_^@jabber.org', "You'd best be maintaining safubot!")
@@ -140,6 +140,41 @@ Returns the value of attribute mode.
140
140
 
141
141
 
142
142
 
143
+
144
+ <h2>
145
+ Instance Method Summary
146
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
147
+ </h2>
148
+
149
+ <ul class="summary">
150
+
151
+ <li class="public ">
152
+ <span class="summary_signature">
153
+
154
+ <a href="#error_report-instance_method" title="#error_report (instance method)">- (Object) <strong>error_report</strong>(e) </a>
155
+
156
+
157
+
158
+ </span>
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+ <span class="summary_desc"><div class='inline'><p>
168
+ Pretty-printing of Exceptions and their backtraces.
169
+ </p>
170
+ </div></span>
171
+
172
+ </li>
173
+
174
+
175
+ </ul>
176
+
177
+
143
178
 
144
179
  <div id="class_attr_details" class="attr_details">
145
180
  <h2>Class Attribute Details</h2>
@@ -190,10 +225,77 @@ Returns the value of attribute mode
190
225
  </div>
191
226
 
192
227
 
228
+ <div id="instance_method_details" class="method_details_list">
229
+ <h2>Instance Method Details</h2>
230
+
231
+
232
+ <div class="method_details first">
233
+ <p class="signature first" id="error_report-instance_method">
234
+
235
+ - (<tt>Object</tt>) <strong>error_report</strong>(e)
236
+
237
+
238
+
239
+ </p><div class="docstring">
240
+ <div class="discussion">
241
+ <p>
242
+ Pretty-printing of Exceptions and their backtraces.
243
+ </p>
244
+
245
+
246
+ </div>
247
+ </div>
248
+ <div class="tags">
249
+ <h3>Parameters:</h3>
250
+ <ul class="param">
251
+
252
+ <li>
253
+
254
+ <span class='name'>e</span>
255
+
256
+
257
+ <span class='type'></span>
258
+
259
+
260
+
261
+ &mdash;
262
+ <div class='inline'><p>
263
+ An Exception to print.
264
+ </p>
265
+ </div>
266
+
267
+ </li>
268
+
269
+ </ul>
270
+
271
+
272
+ </div><table class="source_code">
273
+ <tr>
274
+ <td>
275
+ <pre class="lines">
276
+
277
+
278
+ 7
279
+ 8
280
+ 9</pre>
281
+ </td>
282
+ <td>
283
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 7</span>
284
+
285
+ <span class='kw'>def</span> <span class='id error_report'>error_report</span><span class='lparen'>(</span><span class='id e'>e</span><span class='rparen'>)</span>
286
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id e'>e</span><span class='period'>.</span><span class='id inspect'>inspect</span><span class='rbrace'>}</span><span class='tstring_content'>\n</span><span class='embexpr_beg'>#{</span><span class='id e'>e</span><span class='period'>.</span><span class='id backtrace'>backtrace</span><span class='period'>.</span><span class='id join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n\t</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
287
+ <span class='kw'>end</span></pre>
288
+ </td>
289
+ </tr>
290
+ </table>
291
+ </div>
292
+
293
+ </div>
294
+
193
295
  </div>
194
296
 
195
297
  <div id="footer">
196
- Generated on Mon Nov 28 20:20:03 2011 by
298
+ Generated on Tue Nov 29 11:44:04 2011 by
197
299
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
198
300
  0.7.3 (ruby-1.9.2).
199
301
  </div>
@@ -98,7 +98,20 @@
98
98
  </dl>
99
99
  <div class="clear"></div>
100
100
 
101
+ <h2>Overview</h2><div class="docstring">
102
+ <div class="discussion">
103
+ <p>
104
+ The main event-processing class. You are encouraged to inherit from this
105
+ class when building your own bot, but delegation is also entirely feasible.
106
+ </p>
107
+
108
+
109
+ </div>
110
+ </div>
111
+ <div class="tags">
112
+
101
113
 
114
+ </div>
102
115
 
103
116
 
104
117
 
@@ -245,7 +258,7 @@ A generic &#8220;respond immediately&#8221; interface.
245
258
 
246
259
 
247
260
  <span class="summary_desc"><div class='inline'><p>
248
- Wraps EM::defer with error handling and response pushing for the given
261
+ Wraps Thread.new with error handling and response pushing for the given
249
262
  request.
250
263
  </p>
251
264
  </div></span>
@@ -256,7 +269,7 @@ request.
256
269
  <li class="public ">
257
270
  <span class="summary_signature">
258
271
 
259
- <a href="#cycle-instance_method" title="#cycle (instance method)">- (Object) <strong>cycle</strong> </a>
272
+ <a href="#dispatch-instance_method" title="#dispatch (instance method)">- (Object) <strong>dispatch</strong>(resp) </a>
260
273
 
261
274
 
262
275
 
@@ -269,7 +282,10 @@ request.
269
282
 
270
283
 
271
284
 
272
- <span class="summary_desc"><div class='inline'></div></span>
285
+ <span class="summary_desc"><div class='inline'><p>
286
+ Performs appropriate dispatch operation for response type.
287
+ </p>
288
+ </div></span>
273
289
 
274
290
  </li>
275
291
 
@@ -277,7 +293,7 @@ request.
277
293
  <li class="public ">
278
294
  <span class="summary_signature">
279
295
 
280
- <a href="#dispatch-instance_method" title="#dispatch (instance method)">- (Object) <strong>dispatch</strong>(resp) </a>
296
+ <a href="#enable_twitter-instance_method" title="#enable_twitter (instance method)">- (Object) <strong>enable_twitter</strong>(opts = {}) </a>
281
297
 
282
298
 
283
299
 
@@ -290,7 +306,10 @@ request.
290
306
 
291
307
 
292
308
 
293
- <span class="summary_desc"><div class='inline'></div></span>
309
+ <span class="summary_desc"><div class='inline'><p>
310
+ Initialises Twitter-related functionality.
311
+ </p>
312
+ </div></span>
294
313
 
295
314
  </li>
296
315
 
@@ -298,7 +317,7 @@ request.
298
317
  <li class="public ">
299
318
  <span class="summary_signature">
300
319
 
301
- <a href="#enable_twitter-instance_method" title="#enable_twitter (instance method)">- (Object) <strong>enable_twitter</strong>(opts = {}) </a>
320
+ <a href="#enable_xmpp-instance_method" title="#enable_xmpp (instance method)">- (Object) <strong>enable_xmpp</strong>(options = {}) </a>
302
321
 
303
322
 
304
323
 
@@ -311,7 +330,10 @@ request.
311
330
 
312
331
 
313
332
 
314
- <span class="summary_desc"><div class='inline'></div></span>
333
+ <span class="summary_desc"><div class='inline'><p>
334
+ Initialises XMPP-related functionality.
335
+ </p>
336
+ </div></span>
315
337
 
316
338
  </li>
317
339
 
@@ -319,12 +341,14 @@ request.
319
341
  <li class="public ">
320
342
  <span class="summary_signature">
321
343
 
322
- <a href="#enable_xmpp-instance_method" title="#enable_xmpp (instance method)">- (Object) <strong>enable_xmpp</strong>(options = {}) </a>
344
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Bot) <strong>initialize</strong>(options = {}) </a>
323
345
 
324
346
 
325
347
 
326
348
  </span>
327
349
 
350
+ <span class="note title constructor">constructor</span>
351
+
328
352
 
329
353
 
330
354
 
@@ -332,7 +356,10 @@ request.
332
356
 
333
357
 
334
358
 
335
- <span class="summary_desc"><div class='inline'></div></span>
359
+ <span class="summary_desc"><div class='inline'><p>
360
+ A new instance of Bot.
361
+ </p>
362
+ </div></span>
336
363
 
337
364
  </li>
338
365
 
@@ -340,14 +367,12 @@ request.
340
367
  <li class="public ">
341
368
  <span class="summary_signature">
342
369
 
343
- <a href="#initialize-instance_method" title="#initialize (instance method)">- (Bot) <strong>initialize</strong>(options = {}) </a>
370
+ <a href="#process-instance_method" title="#process (instance method)">- (Object) <strong>process</strong> </a>
344
371
 
345
372
 
346
373
 
347
374
  </span>
348
375
 
349
- <span class="note title constructor">constructor</span>
350
-
351
376
 
352
377
 
353
378
 
@@ -356,7 +381,7 @@ request.
356
381
 
357
382
 
358
383
  <span class="summary_desc"><div class='inline'><p>
359
- A new instance of Bot.
384
+ Goes through each unprocessed Request and submits it for processing.
360
385
  </p>
361
386
  </div></span>
362
387
 
@@ -366,7 +391,7 @@ A new instance of Bot.
366
391
  <li class="public ">
367
392
  <span class="summary_signature">
368
393
 
369
- <a href="#process-instance_method" title="#process (instance method)">- (Object) <strong>process</strong> </a>
394
+ <a href="#process_request-instance_method" title="#process_request (instance method)">- (Object) <strong>process_request</strong>(req) </a>
370
395
 
371
396
 
372
397
 
@@ -379,7 +404,10 @@ A new instance of Bot.
379
404
 
380
405
 
381
406
 
382
- <span class="summary_desc"><div class='inline'></div></span>
407
+ <span class="summary_desc"><div class='inline'><p>
408
+ Processes an individual request (synchronously).
409
+ </p>
410
+ </div></span>
383
411
 
384
412
  </li>
385
413
 
@@ -387,7 +415,7 @@ A new instance of Bot.
387
415
  <li class="public ">
388
416
  <span class="summary_signature">
389
417
 
390
- <a href="#process_request-instance_method" title="#process_request (instance method)">- (Object) <strong>process_request</strong>(req) </a>
418
+ <a href="#pull-instance_method" title="#pull (instance method)">- (Object) <strong>pull</strong> </a>
391
419
 
392
420
 
393
421
 
@@ -400,7 +428,11 @@ A new instance of Bot.
400
428
 
401
429
 
402
430
 
403
- <span class="summary_desc"><div class='inline'></div></span>
431
+ <span class="summary_desc"><div class='inline'><p>
432
+ This pulls requests from passive non-streaming sources (currently, the
433
+ Twitter AJAX API).
434
+ </p>
435
+ </div></span>
404
436
 
405
437
  </li>
406
438
 
@@ -408,7 +440,7 @@ A new instance of Bot.
408
440
  <li class="public ">
409
441
  <span class="summary_signature">
410
442
 
411
- <a href="#pull-instance_method" title="#pull (instance method)">- (Object) <strong>pull</strong> </a>
443
+ <a href="#push-instance_method" title="#push (instance method)">- (Object) <strong>push</strong> </a>
412
444
 
413
445
 
414
446
 
@@ -421,7 +453,10 @@ A new instance of Bot.
421
453
 
422
454
 
423
455
 
424
- <span class="summary_desc"><div class='inline'></div></span>
456
+ <span class="summary_desc"><div class='inline'><p>
457
+ Dispatches all undispatched Responses.
458
+ </p>
459
+ </div></span>
425
460
 
426
461
  </li>
427
462
 
@@ -429,7 +464,7 @@ A new instance of Bot.
429
464
  <li class="public ">
430
465
  <span class="summary_signature">
431
466
 
432
- <a href="#push-instance_method" title="#push (instance method)">- (Object) <strong>push</strong> </a>
467
+ <a href="#request_error-instance_method" title="#request_error (instance method)">- (Object) <strong>request_error</strong>(req, e) </a>
433
468
 
434
469
 
435
470
 
@@ -442,7 +477,10 @@ A new instance of Bot.
442
477
 
443
478
 
444
479
 
445
- <span class="summary_desc"><div class='inline'></div></span>
480
+ <span class="summary_desc"><div class='inline'><p>
481
+ Records an error and emits a corresponding :request_error event.
482
+ </p>
483
+ </div></span>
446
484
 
447
485
  </li>
448
486
 
@@ -450,7 +488,7 @@ A new instance of Bot.
450
488
  <li class="public ">
451
489
  <span class="summary_signature">
452
490
 
453
- <a href="#request_error-instance_method" title="#request_error (instance method)">- (Object) <strong>request_error</strong>(req, e) </a>
491
+ <a href="#respond-instance_method" title="#respond (instance method)">- (Object) <strong>respond</strong>(req, text) </a>
454
492
 
455
493
 
456
494
 
@@ -463,7 +501,10 @@ A new instance of Bot.
463
501
 
464
502
 
465
503
 
466
- <span class="summary_desc"><div class='inline'></div></span>
504
+ <span class="summary_desc"><div class='inline'><p>
505
+ Adds a response to the queue.
506
+ </p>
507
+ </div></span>
467
508
 
468
509
  </li>
469
510
 
@@ -471,7 +512,7 @@ A new instance of Bot.
471
512
  <li class="public ">
472
513
  <span class="summary_signature">
473
514
 
474
- <a href="#respond-instance_method" title="#respond (instance method)">- (Object) <strong>respond</strong>(req, text) </a>
515
+ <a href="#respond_now-instance_method" title="#respond_now (instance method)">- (Object) <strong>respond_now</strong>(req, text) </a>
475
516
 
476
517
 
477
518
 
@@ -485,7 +526,7 @@ A new instance of Bot.
485
526
 
486
527
 
487
528
  <span class="summary_desc"><div class='inline'><p>
488
- Adds a response to the queue.
529
+ Respond + push.
489
530
  </p>
490
531
  </div></span>
491
532
 
@@ -495,7 +536,7 @@ Adds a response to the queue.
495
536
  <li class="public ">
496
537
  <span class="summary_signature">
497
538
 
498
- <a href="#respond_now-instance_method" title="#respond_now (instance method)">- (Object) <strong>respond_now</strong>(req, text) </a>
539
+ <a href="#run-instance_method" title="#run (instance method)">- (Object) <strong>run</strong> </a>
499
540
 
500
541
 
501
542
 
@@ -509,7 +550,7 @@ Adds a response to the queue.
509
550
 
510
551
 
511
552
  <span class="summary_desc"><div class='inline'><p>
512
- Respond + push.
553
+ Calls run_nowait and then waits for all child processes.
513
554
  </p>
514
555
  </div></span>
515
556
 
@@ -519,7 +560,7 @@ Respond + push.
519
560
  <li class="public ">
520
561
  <span class="summary_signature">
521
562
 
522
- <a href="#run-instance_method" title="#run (instance method)">- (Object) <strong>run</strong> </a>
563
+ <a href="#run_nowait-instance_method" title="#run_nowait (instance method)">- (Object) <strong>run_nowait</strong> </a>
523
564
 
524
565
 
525
566
 
@@ -532,7 +573,11 @@ Respond + push.
532
573
 
533
574
 
534
575
 
535
- <span class="summary_desc"><div class='inline'></div></span>
576
+ <span class="summary_desc"><div class='inline'><p>
577
+ Runs an initial request-processing loop and then forks the streaming
578
+ processes.
579
+ </p>
580
+ </div></span>
536
581
 
537
582
  </li>
538
583
 
@@ -553,7 +598,10 @@ Respond + push.
553
598
 
554
599
 
555
600
 
556
- <span class="summary_desc"><div class='inline'></div></span>
601
+ <span class="summary_desc"><div class='inline'><p>
602
+ Shuts down the streaming processes.
603
+ </p>
604
+ </div></span>
557
605
 
558
606
  </li>
559
607
 
@@ -599,16 +647,16 @@ A new instance of Bot
599
647
  <pre class="lines">
600
648
 
601
649
 
602
- 169
603
- 170
604
- 171
605
- 172
606
- 173
607
- 174
608
- 175</pre>
650
+ 190
651
+ 191
652
+ 192
653
+ 193
654
+ 194
655
+ 195
656
+ 196</pre>
609
657
  </td>
610
658
  <td>
611
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 169</span>
659
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 190</span>
612
660
 
613
661
  <span class='kw'>def</span> <span class='id initialize'>initialize</span><span class='lparen'>(</span><span class='id options'>options</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
614
662
  <span class='id defaults'>defaults</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='symbol'>:database</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>safubot</span><span class='tstring_end'>&quot;</span></span> <span class='rbrace'>}</span>
@@ -655,12 +703,12 @@ Returns the value of attribute opts
655
703
  <pre class="lines">
656
704
 
657
705
 
658
- 38
659
- 39
660
- 40</pre>
706
+ 47
707
+ 48
708
+ 49</pre>
661
709
  </td>
662
710
  <td>
663
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 38</span>
711
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 47</span>
664
712
 
665
713
  <span class='kw'>def</span> <span class='id opts'>opts</span>
666
714
  <span class='ivar'>@opts</span>
@@ -698,12 +746,12 @@ Returns the value of attribute twitter
698
746
  <pre class="lines">
699
747
 
700
748
 
701
- 38
702
- 39
703
- 40</pre>
749
+ 47
750
+ 48
751
+ 49</pre>
704
752
  </td>
705
753
  <td>
706
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 38</span>
754
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 47</span>
707
755
 
708
756
  <span class='kw'>def</span> <span class='id twitter'>twitter</span>
709
757
  <span class='ivar'>@twitter</span>
@@ -741,12 +789,12 @@ Returns the value of attribute xmpp
741
789
  <pre class="lines">
742
790
 
743
791
 
744
- 38
745
- 39
746
- 40</pre>
792
+ 47
793
+ 48
794
+ 49</pre>
747
795
  </td>
748
796
  <td>
749
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 38</span>
797
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 47</span>
750
798
 
751
799
  <span class='kw'>def</span> <span class='id xmpp'>xmpp</span>
752
800
  <span class='ivar'>@xmpp</span>
@@ -780,7 +828,48 @@ A generic &#8220;respond immediately&#8221; interface.
780
828
  </div>
781
829
  </div>
782
830
  <div class="tags">
831
+ <h3>Parameters:</h3>
832
+ <ul class="param">
833
+
834
+ <li>
835
+
836
+ <span class='name'>text</span>
837
+
838
+
839
+ <span class='type'></span>
840
+
841
+
842
+
843
+ &mdash;
844
+ <div class='inline'><p>
845
+ The body of a Request to process.
846
+ </p>
847
+ </div>
848
+
849
+ </li>
850
+
851
+ <li>
852
+
853
+ <span class='name'>user</span>
854
+
855
+
856
+ <span class='type'></span>
857
+
858
+
859
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
860
+
861
+
862
+ &mdash;
863
+ <div class='inline'><p>
864
+ The user sending the request. Defaults to
865
+ KnownUser.by_name(&#8216;testing&#8217;)
866
+ </p>
867
+ </div>
868
+
869
+ </li>
783
870
 
871
+ </ul>
872
+
784
873
 
785
874
  </div><table class="source_code">
786
875
  <tr>
@@ -788,16 +877,16 @@ A generic &#8220;respond immediately&#8221; interface.
788
877
  <pre class="lines">
789
878
 
790
879
 
791
- 54
792
- 55
793
- 56
794
- 57
795
- 58
796
- 59
797
- 60</pre>
880
+ 61
881
+ 62
882
+ 63
883
+ 64
884
+ 65
885
+ 66
886
+ 67</pre>
798
887
  </td>
799
888
  <td>
800
- <pre class="code"><span class="info file"># File 'lib/safubot/test_helper.rb', line 54</span>
889
+ <pre class="code"><span class="info file"># File 'lib/safubot/test_helper.rb', line 61</span>
801
890
 
802
891
  <span class='kw'>def</span> <span class='id answer'>answer</span><span class='lparen'>(</span><span class='id text'>text</span><span class='comma'>,</span> <span class='id user'>user</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
803
892
  <span class='id user'>user</span> <span class='op'>||=</span> <span class='const'>KnownUser</span><span class='period'>.</span><span class='id by_name'>by_name</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>testing</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
@@ -821,7 +910,7 @@ A generic &#8220;respond immediately&#8221; interface.
821
910
  </p><div class="docstring">
822
911
  <div class="discussion">
823
912
  <p>
824
- Wraps EM::defer with error handling and response pushing for the given
913
+ Wraps Thread.new with error handling and response pushing for the given
825
914
  request.
826
915
  </p>
827
916
 
@@ -875,23 +964,23 @@ The operation to be performed in a separate thread.
875
964
  <pre class="lines">
876
965
 
877
966
 
878
- 119
879
- 120
880
- 121
881
- 122
882
- 123
883
- 124
884
- 125
885
- 126
886
- 127
887
- 128
888
- 129</pre>
967
+ 138
968
+ 139
969
+ 140
970
+ 141
971
+ 142
972
+ 143
973
+ 144
974
+ 145
975
+ 146
976
+ 147
977
+ 148</pre>
889
978
  </td>
890
979
  <td>
891
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 119</span>
980
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 138</span>
892
981
 
893
982
  <span class='kw'>def</span> <span class='id concurrently'>concurrently</span><span class='lparen'>(</span><span class='id req'>req</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id blk'>blk</span><span class='rparen'>)</span>
894
- <span class='const'>EventMachine</span><span class='op'>::</span><span class='id defer'>defer</span> <span class='kw'>do</span>
983
+ <span class='const'>Thread</span><span class='period'>.</span><span class='id new'>new</span> <span class='kw'>do</span>
895
984
  <span class='kw'>begin</span>
896
985
  <span class='id blk'>blk</span><span class='period'>.</span><span class='id call'>call</span>
897
986
  <span class='kw'>rescue</span> <span class='const'>Exception</span> <span class='op'>=&gt;</span> <span class='id e'>e</span>
@@ -907,78 +996,81 @@ The operation to be performed in a separate thread.
907
996
  </div>
908
997
 
909
998
  <div class="method_details ">
910
- <p class="signature " id="cycle-instance_method">
999
+ <p class="signature " id="dispatch-instance_method">
911
1000
 
912
- - (<tt>Object</tt>) <strong>cycle</strong>
1001
+ - (<tt>Object</tt>) <strong>dispatch</strong>(resp)
913
1002
 
914
1003
 
915
1004
 
916
- </p><table class="source_code">
917
- <tr>
918
- <td>
919
- <pre class="lines">
920
-
1005
+ </p><div class="docstring">
1006
+ <div class="discussion">
1007
+ <p>
1008
+ Performs appropriate dispatch operation for response type.
1009
+ </p>
921
1010
 
922
- 112
923
- 113
924
- 114</pre>
925
- </td>
926
- <td>
927
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 112</span>
928
1011
 
929
- <span class='kw'>def</span> <span class='id cycle'>cycle</span>
930
- <span class='id pull'>pull</span><span class='semicolon'>;</span> <span class='id process'>process</span><span class='semicolon'>;</span> <span class='id push'>push</span>
931
- <span class='kw'>end</span></pre>
932
- </td>
933
- </tr>
934
- </table>
1012
+ </div>
935
1013
  </div>
936
-
937
- <div class="method_details ">
938
- <p class="signature " id="dispatch-instance_method">
1014
+ <div class="tags">
1015
+ <h3>Parameters:</h3>
1016
+ <ul class="param">
939
1017
 
940
- - (<tt>Object</tt>) <strong>dispatch</strong>(resp)
1018
+ <li>
1019
+
1020
+ <span class='name'>resp</span>
1021
+
1022
+
1023
+ <span class='type'></span>
1024
+
1025
+
1026
+
1027
+ &mdash;
1028
+ <div class='inline'><p>
1029
+ An undispatched Response.
1030
+ </p>
1031
+ </div>
1032
+
1033
+ </li>
941
1034
 
1035
+ </ul>
942
1036
 
943
-
944
- </p><table class="source_code">
1037
+
1038
+ </div><table class="source_code">
945
1039
  <tr>
946
1040
  <td>
947
1041
  <pre class="lines">
948
1042
 
949
1043
 
950
- 58
951
- 59
952
- 60
953
- 61
954
- 62
955
- 63
956
- 64
957
- 65
958
- 66
959
- 67
960
- 68
961
- 69
962
- 70
963
- 71
964
- 72
965
- 73
966
- 74
967
- 75
968
- 76
969
1044
  77
970
1045
  78
971
1046
  79
972
1047
  80
973
1048
  81
974
- 82</pre>
1049
+ 82
1050
+ 83
1051
+ 84
1052
+ 85
1053
+ 86
1054
+ 87
1055
+ 88
1056
+ 89
1057
+ 90
1058
+ 91
1059
+ 92
1060
+ 93
1061
+ 94
1062
+ 95
1063
+ 96
1064
+ 97
1065
+ 98
1066
+ 99
1067
+ 100</pre>
975
1068
  </td>
976
1069
  <td>
977
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 58</span>
1070
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 77</span>
978
1071
 
979
1072
  <span class='kw'>def</span> <span class='id dispatch'>dispatch</span><span class='lparen'>(</span><span class='id resp'>resp</span><span class='rparen'>)</span>
980
- <span class='comment'># Performs appropriate dispatch operation for response type.
981
- </span> <span class='kw'>begin</span>
1073
+ <span class='kw'>begin</span>
982
1074
  <span class='id source'>source</span> <span class='op'>=</span> <span class='id resp'>resp</span><span class='period'>.</span><span class='id request'>request</span><span class='period'>.</span><span class='id source'>source</span>
983
1075
  <span class='kw'>if</span> <span class='const'>Safubot</span><span class='op'>::</span><span class='id mode'>mode</span> <span class='op'>!=</span> <span class='symbol'>:production</span>
984
1076
  <span class='const'>Log</span><span class='period'>.</span><span class='id info'>info</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id source'>source</span><span class='period'>.</span><span class='id class'>class</span><span class='rbrace'>}</span><span class='tstring_content'> Response to </span><span class='embexpr_beg'>#{</span><span class='id source'>source</span><span class='period'>.</span><span class='id username'>username</span><span class='rbrace'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id resp'>resp</span><span class='period'>.</span><span class='id text'>text</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
@@ -1013,21 +1105,33 @@ The operation to be performed in a separate thread.
1013
1105
 
1014
1106
 
1015
1107
 
1016
- </p><table class="source_code">
1108
+ </p><div class="docstring">
1109
+ <div class="discussion">
1110
+ <p>
1111
+ Initialises Twitter-related functionality.
1112
+ </p>
1113
+
1114
+
1115
+ </div>
1116
+ </div>
1117
+ <div class="tags">
1118
+
1119
+
1120
+ </div><table class="source_code">
1017
1121
  <tr>
1018
1122
  <td>
1019
1123
  <pre class="lines">
1020
1124
 
1021
1125
 
1022
- 154
1023
- 155
1024
- 156
1025
- 157
1026
- 158
1027
- 159</pre>
1126
+ 174
1127
+ 175
1128
+ 176
1129
+ 177
1130
+ 178
1131
+ 179</pre>
1028
1132
  </td>
1029
1133
  <td>
1030
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 154</span>
1134
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 174</span>
1031
1135
 
1032
1136
  <span class='kw'>def</span> <span class='id enable_twitter'>enable_twitter</span><span class='lparen'>(</span><span class='id opts'>opts</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1033
1137
  <span class='ivar'>@twitter</span> <span class='op'>=</span> <span class='const'>Twitter</span><span class='op'>::</span><span class='const'>Bot</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='id opts'>opts</span><span class='rparen'>)</span>
@@ -1047,22 +1151,34 @@ The operation to be performed in a separate thread.
1047
1151
 
1048
1152
 
1049
1153
 
1050
- </p><table class="source_code">
1154
+ </p><div class="docstring">
1155
+ <div class="discussion">
1156
+ <p>
1157
+ Initialises XMPP-related functionality.
1158
+ </p>
1159
+
1160
+
1161
+ </div>
1162
+ </div>
1163
+ <div class="tags">
1164
+
1165
+
1166
+ </div><table class="source_code">
1051
1167
  <tr>
1052
1168
  <td>
1053
1169
  <pre class="lines">
1054
1170
 
1055
1171
 
1056
- 161
1057
- 162
1058
- 163
1059
- 164
1060
- 165
1061
- 166
1062
- 167</pre>
1172
+ 182
1173
+ 183
1174
+ 184
1175
+ 185
1176
+ 186
1177
+ 187
1178
+ 188</pre>
1063
1179
  </td>
1064
1180
  <td>
1065
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 161</span>
1181
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 182</span>
1066
1182
 
1067
1183
  <span class='kw'>def</span> <span class='id enable_xmpp'>enable_xmpp</span><span class='lparen'>(</span><span class='id options'>options</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1068
1184
  <span class='id defaults'>defaults</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='symbol'>:jid</span> <span class='op'>=&gt;</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='symbol'>:password</span> <span class='op'>=&gt;</span> <span class='kw'>nil</span> <span class='rbrace'>}</span>
@@ -1083,20 +1199,32 @@ The operation to be performed in a separate thread.
1083
1199
 
1084
1200
 
1085
1201
 
1086
- </p><table class="source_code">
1202
+ </p><div class="docstring">
1203
+ <div class="discussion">
1204
+ <p>
1205
+ Goes through each unprocessed Request and submits it for processing.
1206
+ </p>
1207
+
1208
+
1209
+ </div>
1210
+ </div>
1211
+ <div class="tags">
1212
+
1213
+
1214
+ </div><table class="source_code">
1087
1215
  <tr>
1088
1216
  <td>
1089
1217
  <pre class="lines">
1090
1218
 
1091
1219
 
1092
- 88
1093
- 89
1094
- 90
1095
- 91
1096
- 92</pre>
1220
+ 108
1221
+ 109
1222
+ 110
1223
+ 111
1224
+ 112</pre>
1097
1225
  </td>
1098
1226
  <td>
1099
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 88</span>
1227
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 108</span>
1100
1228
 
1101
1229
  <span class='kw'>def</span> <span class='id process'>process</span>
1102
1230
  <span class='const'>Request</span><span class='period'>.</span><span class='id where'>where</span><span class='lparen'>(</span><span class='symbol'>:processed</span> <span class='op'>=&gt;</span> <span class='kw'>false</span><span class='rparen'>)</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id req'>req</span><span class='op'>|</span>
@@ -1115,25 +1243,58 @@ The operation to be performed in a separate thread.
1115
1243
 
1116
1244
 
1117
1245
 
1118
- </p><table class="source_code">
1246
+ </p><div class="docstring">
1247
+ <div class="discussion">
1248
+ <p>
1249
+ Processes an individual request (synchronously).
1250
+ </p>
1251
+
1252
+
1253
+ </div>
1254
+ </div>
1255
+ <div class="tags">
1256
+ <h3>Parameters:</h3>
1257
+ <ul class="param">
1258
+
1259
+ <li>
1260
+
1261
+ <span class='name'>req</span>
1262
+
1263
+
1264
+ <span class='type'></span>
1265
+
1266
+
1267
+
1268
+ &mdash;
1269
+ <div class='inline'><p>
1270
+ An unprocessed Request.
1271
+ </p>
1272
+ </div>
1273
+
1274
+ </li>
1275
+
1276
+ </ul>
1277
+
1278
+
1279
+ </div><table class="source_code">
1119
1280
  <tr>
1120
1281
  <td>
1121
1282
  <pre class="lines">
1122
1283
 
1123
1284
 
1124
- 47
1125
- 48
1126
- 49
1127
- 50
1128
- 51
1129
- 52
1130
- 53
1131
- 54
1132
- 55
1133
- 56</pre>
1285
+ 63
1286
+ 64
1287
+ 65
1288
+ 66
1289
+ 67
1290
+ 68
1291
+ 69
1292
+ 70
1293
+ 71
1294
+ 72</pre>
1134
1295
  </td>
1135
1296
  <td>
1136
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 47</span>
1297
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 63</span>
1137
1298
 
1138
1299
  <span class='kw'>def</span> <span class='id process_request'>process_request</span><span class='lparen'>(</span><span class='id req'>req</span><span class='rparen'>)</span>
1139
1300
  <span class='kw'>begin</span>
@@ -1157,18 +1318,31 @@ The operation to be performed in a separate thread.
1157
1318
 
1158
1319
 
1159
1320
 
1160
- </p><table class="source_code">
1321
+ </p><div class="docstring">
1322
+ <div class="discussion">
1323
+ <p>
1324
+ This pulls requests from passive non-streaming sources (currently, the
1325
+ Twitter AJAX API).
1326
+ </p>
1327
+
1328
+
1329
+ </div>
1330
+ </div>
1331
+ <div class="tags">
1332
+
1333
+
1334
+ </div><table class="source_code">
1161
1335
  <tr>
1162
1336
  <td>
1163
1337
  <pre class="lines">
1164
1338
 
1165
1339
 
1166
- 84
1167
- 85
1168
- 86</pre>
1340
+ 103
1341
+ 104
1342
+ 105</pre>
1169
1343
  </td>
1170
1344
  <td>
1171
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 84</span>
1345
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 103</span>
1172
1346
 
1173
1347
  <span class='kw'>def</span> <span class='id pull'>pull</span>
1174
1348
  <span class='ivar'>@twitter</span><span class='period'>.</span><span class='id pull'>pull</span>
@@ -1185,18 +1359,30 @@ The operation to be performed in a separate thread.
1185
1359
 
1186
1360
 
1187
1361
 
1188
- </p><table class="source_code">
1362
+ </p><div class="docstring">
1363
+ <div class="discussion">
1364
+ <p>
1365
+ Dispatches all undispatched Responses.
1366
+ </p>
1367
+
1368
+
1369
+ </div>
1370
+ </div>
1371
+ <div class="tags">
1372
+
1373
+
1374
+ </div><table class="source_code">
1189
1375
  <tr>
1190
1376
  <td>
1191
1377
  <pre class="lines">
1192
1378
 
1193
1379
 
1194
- 108
1195
- 109
1196
- 110</pre>
1380
+ 130
1381
+ 131
1382
+ 132</pre>
1197
1383
  </td>
1198
1384
  <td>
1199
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 108</span>
1385
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 130</span>
1200
1386
 
1201
1387
  <span class='kw'>def</span> <span class='id push'>push</span>
1202
1388
  <span class='const'>Response</span><span class='period'>.</span><span class='id where'>where</span><span class='lparen'>(</span><span class='symbol'>:dispatched</span> <span class='op'>=&gt;</span> <span class='kw'>false</span><span class='rparen'>)</span><span class='period'>.</span><span class='id each'>each</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id method'>method</span><span class='lparen'>(</span><span class='symbol'>:dispatch</span><span class='rparen'>)</span><span class='rparen'>)</span>
@@ -1213,21 +1399,71 @@ The operation to be performed in a separate thread.
1213
1399
 
1214
1400
 
1215
1401
 
1216
- </p><table class="source_code">
1402
+ </p><div class="docstring">
1403
+ <div class="discussion">
1404
+ <p>
1405
+ Records an error and emits a corresponding :request_error event.
1406
+ </p>
1407
+
1408
+
1409
+ </div>
1410
+ </div>
1411
+ <div class="tags">
1412
+ <h3>Parameters:</h3>
1413
+ <ul class="param">
1414
+
1415
+ <li>
1416
+
1417
+ <span class='name'>req</span>
1418
+
1419
+
1420
+ <span class='type'></span>
1421
+
1422
+
1423
+
1424
+ &mdash;
1425
+ <div class='inline'><p>
1426
+ The Request for which the error was encountered.
1427
+ </p>
1428
+ </div>
1429
+
1430
+ </li>
1431
+
1432
+ <li>
1433
+
1434
+ <span class='name'>e</span>
1435
+
1436
+
1437
+ <span class='type'></span>
1438
+
1439
+
1440
+
1441
+ &mdash;
1442
+ <div class='inline'><p>
1443
+ The caught Exception.
1444
+ </p>
1445
+ </div>
1446
+
1447
+ </li>
1448
+
1449
+ </ul>
1450
+
1451
+
1452
+ </div><table class="source_code">
1217
1453
  <tr>
1218
1454
  <td>
1219
1455
  <pre class="lines">
1220
1456
 
1221
1457
 
1222
- 40
1223
- 41
1224
- 42
1225
- 43
1226
- 44
1227
- 45</pre>
1458
+ 53
1459
+ 54
1460
+ 55
1461
+ 56
1462
+ 57
1463
+ 58</pre>
1228
1464
  </td>
1229
1465
  <td>
1230
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 40</span>
1466
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 53</span>
1231
1467
 
1232
1468
  <span class='kw'>def</span> <span class='id request_error'>request_error</span><span class='lparen'>(</span><span class='id req'>req</span><span class='comma'>,</span> <span class='id e'>e</span><span class='rparen'>)</span>
1233
1469
  <span class='const'>Log</span><span class='period'>.</span><span class='id error'>error</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Error processing </span><span class='embexpr_beg'>#{</span><span class='id req'>req</span><span class='period'>.</span><span class='id source'>source</span><span class='period'>.</span><span class='id class'>class</span><span class='rbrace'>}</span><span class='tstring_content'> '</span><span class='embexpr_beg'>#{</span><span class='id req'>req</span><span class='period'>.</span><span class='id text'>text</span><span class='rbrace'>}</span><span class='tstring_content'>': </span><span class='embexpr_beg'>#{</span><span class='id e'>e</span><span class='rbrace'>}</span><span class='tstring_content'>\n</span><span class='embexpr_beg'>#{</span><span class='id e'>e</span><span class='period'>.</span><span class='id backtrace'>backtrace</span><span class='period'>.</span><span class='id join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n\t</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
@@ -1303,13 +1539,13 @@ Contents of the response.
1303
1539
  <pre class="lines">
1304
1540
 
1305
1541
 
1306
- 97
1307
- 98
1308
- 99
1309
- 100</pre>
1542
+ 118
1543
+ 119
1544
+ 120
1545
+ 121</pre>
1310
1546
  </td>
1311
1547
  <td>
1312
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 97</span>
1548
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 118</span>
1313
1549
 
1314
1550
  <span class='kw'>def</span> <span class='id respond'>respond</span><span class='lparen'>(</span><span class='id req'>req</span><span class='comma'>,</span> <span class='id text'>text</span><span class='rparen'>)</span>
1315
1551
  <span class='const'>Log</span><span class='period'>.</span><span class='id info'>info</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id req'>req</span><span class='period'>.</span><span class='id user'>user</span><span class='period'>.</span><span class='id name'>name</span><span class='rbrace'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id req'>req</span><span class='period'>.</span><span class='id text'>text</span><span class='rbrace'>}</span><span class='tstring_content'>\nsafubot: </span><span class='embexpr_beg'>#{</span><span class='id text'>text</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
@@ -1345,13 +1581,13 @@ Respond + push
1345
1581
  <pre class="lines">
1346
1582
 
1347
1583
 
1348
- 103
1349
- 104
1350
- 105
1351
- 106</pre>
1584
+ 124
1585
+ 125
1586
+ 126
1587
+ 127</pre>
1352
1588
  </td>
1353
1589
  <td>
1354
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 103</span>
1590
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 124</span>
1355
1591
 
1356
1592
  <span class='kw'>def</span> <span class='id respond_now'>respond_now</span><span class='lparen'>(</span><span class='id req'>req</span><span class='comma'>,</span> <span class='id text'>text</span><span class='rparen'>)</span>
1357
1593
  <span class='id respond'>respond</span><span class='lparen'>(</span><span class='id req'>req</span><span class='comma'>,</span> <span class='id text'>text</span><span class='rparen'>)</span>
@@ -1369,51 +1605,92 @@ Respond + push
1369
1605
 
1370
1606
 
1371
1607
 
1372
- </p><table class="source_code">
1608
+ </p><div class="docstring">
1609
+ <div class="discussion">
1610
+ <p>
1611
+ Calls run_nowait and then waits for all child processes.
1612
+ </p>
1613
+
1614
+
1615
+ </div>
1616
+ </div>
1617
+ <div class="tags">
1618
+
1619
+
1620
+ </div><table class="source_code">
1373
1621
  <tr>
1374
1622
  <td>
1375
1623
  <pre class="lines">
1376
1624
 
1377
1625
 
1378
- 131
1379
- 132
1380
- 133
1381
- 134
1382
- 135
1383
- 136
1384
- 137
1385
- 138
1386
- 139
1387
- 140
1388
- 141
1389
- 142
1390
- 143
1391
- 144
1392
- 145
1393
- 146</pre>
1626
+ 158
1627
+ 159
1628
+ 160
1629
+ 161
1630
+ 162
1631
+ 163
1632
+ 164
1633
+ 165</pre>
1394
1634
  </td>
1395
1635
  <td>
1396
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 131</span>
1636
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 158</span>
1397
1637
 
1398
1638
  <span class='kw'>def</span> <span class='id run'>run</span>
1399
- <span class='const'>EventMachine</span><span class='op'>::</span><span class='id run'>run</span> <span class='kw'>do</span>
1400
- <span class='const'>EM</span><span class='op'>::</span><span class='id error_handler'>error_handler</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id e'>e</span><span class='op'>|</span>
1401
- <span class='kw'>if</span> <span class='id e'>e</span><span class='period'>.</span><span class='id is_a?'>is_a?</span> <span class='const'>Interrupt</span>
1402
- <span class='const'>Log</span><span class='period'>.</span><span class='id error'>error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Received interrupt, shutting down.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
1403
- <span class='id stop'>stop</span>
1404
- <span class='kw'>else</span>
1405
- <span class='const'>Log</span><span class='period'>.</span><span class='id error'>error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unhandled exception: </span><span class='embexpr_beg'>#{</span><span class='id e'>e</span><span class='rbrace'>}</span><span class='tstring_content'>\n</span><span class='embexpr_beg'>#{</span><span class='id e'>e</span><span class='period'>.</span><span class='id backtrace'>backtrace</span><span class='period'>.</span><span class='id join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\t\n</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
1406
- <span class='kw'>end</span>
1407
- <span class='kw'>end</span>
1408
-
1409
- <span class='id cycle'>cycle</span>
1410
- <span class='ivar'>@twitter</span><span class='period'>.</span><span class='id run'>run</span> <span class='kw'>if</span> <span class='ivar'>@twitter</span>
1411
- <span class='ivar'>@xmpp</span><span class='period'>.</span><span class='id run'>run</span> <span class='kw'>if</span> <span class='ivar'>@xmpp</span>
1639
+ <span class='id run_nowait'>run_nowait</span>
1640
+ <span class='kw'>begin</span>
1641
+ <span class='const'>Process</span><span class='period'>.</span><span class='id waitall'>waitall</span>
1642
+ <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
1643
+ <span class='id stop'>stop</span>
1412
1644
  <span class='kw'>end</span>
1413
1645
  <span class='kw'>end</span></pre>
1414
1646
  </td>
1415
1647
  </tr>
1416
1648
  </table>
1649
+ </div>
1650
+
1651
+ <div class="method_details ">
1652
+ <p class="signature " id="run_nowait-instance_method">
1653
+
1654
+ - (<tt>Object</tt>) <strong>run_nowait</strong>
1655
+
1656
+
1657
+
1658
+ </p><div class="docstring">
1659
+ <div class="discussion">
1660
+ <p>
1661
+ Runs an initial request-processing loop and then forks the streaming
1662
+ processes.
1663
+ </p>
1664
+
1665
+
1666
+ </div>
1667
+ </div>
1668
+ <div class="tags">
1669
+
1670
+
1671
+ </div><table class="source_code">
1672
+ <tr>
1673
+ <td>
1674
+ <pre class="lines">
1675
+
1676
+
1677
+ 151
1678
+ 152
1679
+ 153
1680
+ 154
1681
+ 155</pre>
1682
+ </td>
1683
+ <td>
1684
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 151</span>
1685
+
1686
+ <span class='kw'>def</span> <span class='id run_nowait'>run_nowait</span>
1687
+ <span class='id pull'>pull</span><span class='semicolon'>;</span> <span class='id process'>process</span><span class='semicolon'>;</span> <span class='id push'>push</span>
1688
+ <span class='ivar'>@twitter</span><span class='period'>.</span><span class='id run'>run</span> <span class='kw'>if</span> <span class='ivar'>@twitter</span>
1689
+ <span class='ivar'>@xmpp</span><span class='period'>.</span><span class='id run'>run</span> <span class='kw'>if</span> <span class='ivar'>@xmpp</span>
1690
+ <span class='kw'>end</span></pre>
1691
+ </td>
1692
+ </tr>
1693
+ </table>
1417
1694
  </div>
1418
1695
 
1419
1696
  <div class="method_details ">
@@ -1423,25 +1700,35 @@ Respond + push
1423
1700
 
1424
1701
 
1425
1702
 
1426
- </p><table class="source_code">
1703
+ </p><div class="docstring">
1704
+ <div class="discussion">
1705
+ <p>
1706
+ Shuts down the streaming processes.
1707
+ </p>
1708
+
1709
+
1710
+ </div>
1711
+ </div>
1712
+ <div class="tags">
1713
+
1714
+
1715
+ </div><table class="source_code">
1427
1716
  <tr>
1428
1717
  <td>
1429
1718
  <pre class="lines">
1430
1719
 
1431
1720
 
1432
- 148
1433
- 149
1434
- 150
1435
- 151
1436
- 152</pre>
1721
+ 168
1722
+ 169
1723
+ 170
1724
+ 171</pre>
1437
1725
  </td>
1438
1726
  <td>
1439
- <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 148</span>
1727
+ <pre class="code"><span class="info file"># File 'lib/safubot/bot.rb', line 168</span>
1440
1728
 
1441
1729
  <span class='kw'>def</span> <span class='id stop'>stop</span>
1442
1730
  <span class='ivar'>@twitter</span><span class='period'>.</span><span class='id stop'>stop</span> <span class='kw'>if</span> <span class='ivar'>@twitter</span>
1443
1731
  <span class='ivar'>@xmpp</span><span class='period'>.</span><span class='id stop'>stop</span> <span class='kw'>if</span> <span class='ivar'>@xmpp</span>
1444
- <span class='const'>EM</span><span class='op'>::</span><span class='id stop_event_loop'>stop_event_loop</span>
1445
1732
  <span class='kw'>end</span></pre>
1446
1733
  </td>
1447
1734
  </tr>
@@ -1453,7 +1740,7 @@ Respond + push
1453
1740
  </div>
1454
1741
 
1455
1742
  <div id="footer">
1456
- Generated on Mon Nov 28 20:20:03 2011 by
1743
+ Generated on Tue Nov 29 11:44:04 2011 by
1457
1744
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1458
1745
  0.7.3 (ruby-1.9.2).
1459
1746
  </div>