safubot 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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>