tango-etl 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{changelog.md → CHANGELOG.md} +5 -1
- data/{readme.md → README.md} +1 -1
- data/doc/Multidb/Balancer.html +202 -0
- data/doc/Multidb.html +184 -0
- data/doc/Tango/AbstractModel.html +608 -0
- data/doc/Tango/App.html +1334 -0
- data/doc/Tango/DatabaseLocker.html +541 -0
- data/doc/Tango/ETL/Dispatcher.html +465 -0
- data/doc/Tango/ETL/HandlerInterface.html +639 -0
- data/doc/Tango/ETL/OperatorInterface.html +494 -0
- data/doc/Tango/ETL.html +117 -0
- data/doc/Tango/Kernel.html +432 -0
- data/doc/Tango/LinkStack.html +737 -0
- data/doc/Tango/Resource/Buffer.html +565 -0
- data/doc/Tango/Resource/Cache.html +834 -0
- data/doc/Tango/Resource.html +117 -0
- data/doc/Tango.html +131 -0
- data/doc/_index.html +297 -0
- data/doc/class_list.html +54 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/file.README.html +80 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +80 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +178 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +365 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/tango/abstract_model.rb +1 -0
- data/lib/tango/app.rb +4 -7
- data/lib/tango/database_locker.rb +23 -2
- data/lib/tango/etl/handler_interface.rb +12 -6
- data/lib/tango/resource/buffer.rb +7 -7
- data/lib/tango/resource/cache.rb +18 -13
- data/lib/tango/version.rb +1 -1
- data/test/support/lib/simple_handler.rb +5 -14
- data/test/unit/etl/test_dispatcher.rb +21 -5
- metadata +33 -6
- data/config/app.yml.sample +0 -6
- data/config/database.yml.sample +0 -27
data/doc/Tango/App.html
ADDED
@@ -0,0 +1,1334 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>
|
7
|
+
Class: Tango::App
|
8
|
+
|
9
|
+
— Documentation by YARD 0.8.7.4
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
hasFrames = window.top.frames.main ? true : false;
|
19
|
+
relpath = '../';
|
20
|
+
framesUrl = "../frames.html#!Tango/App.html";
|
21
|
+
</script>
|
22
|
+
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
25
|
+
|
26
|
+
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
27
|
+
|
28
|
+
|
29
|
+
</head>
|
30
|
+
<body>
|
31
|
+
<div id="header">
|
32
|
+
<div id="menu">
|
33
|
+
|
34
|
+
<a href="../_index.html">Index (A)</a> »
|
35
|
+
<span class='title'><span class='object_link'><a href="../Tango.html" title="Tango (module)">Tango</a></span></span>
|
36
|
+
»
|
37
|
+
<span class="title">App</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a class="full_list_link" id="class_list_link"
|
46
|
+
href="../class_list.html">
|
47
|
+
Class List
|
48
|
+
</a>
|
49
|
+
|
50
|
+
<a class="full_list_link" id="method_list_link"
|
51
|
+
href="../method_list.html">
|
52
|
+
Method List
|
53
|
+
</a>
|
54
|
+
|
55
|
+
<a class="full_list_link" id="file_list_link"
|
56
|
+
href="../file_list.html">
|
57
|
+
File List
|
58
|
+
</a>
|
59
|
+
|
60
|
+
</div>
|
61
|
+
<div class="clear"></div>
|
62
|
+
</div>
|
63
|
+
|
64
|
+
<iframe id="search_frame"></iframe>
|
65
|
+
|
66
|
+
<div id="content"><h1>Class: Tango::App
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
</h1>
|
71
|
+
|
72
|
+
<dl class="box">
|
73
|
+
|
74
|
+
<dt class="r1">Inherits:</dt>
|
75
|
+
<dd class="r1">
|
76
|
+
<span class="inheritName">Object</span>
|
77
|
+
|
78
|
+
<ul class="fullTree">
|
79
|
+
<li>Object</li>
|
80
|
+
|
81
|
+
<li class="next">Tango::App</li>
|
82
|
+
|
83
|
+
</ul>
|
84
|
+
<a href="#" class="inheritanceTree">show all</a>
|
85
|
+
|
86
|
+
</dd>
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
<dt class="r2 last">Defined in:</dt>
|
97
|
+
<dd class="r2 last">lib/tango/app.rb</dd>
|
98
|
+
|
99
|
+
</dl>
|
100
|
+
<div class="clear"></div>
|
101
|
+
|
102
|
+
<h2>Overview</h2><div class="docstring">
|
103
|
+
<div class="discussion">
|
104
|
+
|
105
|
+
<p>Tango application</p>
|
106
|
+
|
107
|
+
|
108
|
+
</div>
|
109
|
+
</div>
|
110
|
+
<div class="tags">
|
111
|
+
|
112
|
+
<p class="tag_title">Author:</p>
|
113
|
+
<ul class="author">
|
114
|
+
|
115
|
+
<li>
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
<div class='inline'>
|
122
|
+
<p>Mckomo</p>
|
123
|
+
</div>
|
124
|
+
|
125
|
+
</li>
|
126
|
+
|
127
|
+
</ul>
|
128
|
+
|
129
|
+
</div>
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
<h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
|
134
|
+
<ul class="summary">
|
135
|
+
|
136
|
+
<li class="public ">
|
137
|
+
<span class="summary_signature">
|
138
|
+
|
139
|
+
<a href="#config-instance_method" title="#config (instance method)">- (Object) <strong>config</strong> </a>
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
</span>
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
|
148
|
+
<span class="note title readonly">readonly</span>
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
<span class="summary_desc"><div class='inline'>
|
159
|
+
<p>Returns the value of attribute config.</p>
|
160
|
+
</div></span>
|
161
|
+
|
162
|
+
</li>
|
163
|
+
|
164
|
+
|
165
|
+
<li class="public ">
|
166
|
+
<span class="summary_signature">
|
167
|
+
|
168
|
+
<a href="#dispatcher-instance_method" title="#dispatcher (instance method)">- (Object) <strong>dispatcher</strong> </a>
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
</span>
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
<span class="note title readonly">readonly</span>
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
<span class="summary_desc"><div class='inline'>
|
188
|
+
<p>Returns the value of attribute dispatcher.</p>
|
189
|
+
</div></span>
|
190
|
+
|
191
|
+
</li>
|
192
|
+
|
193
|
+
|
194
|
+
<li class="public ">
|
195
|
+
<span class="summary_signature">
|
196
|
+
|
197
|
+
<a href="#link_stack-instance_method" title="#link_stack (instance method)">- (Object) <strong>link_stack</strong> </a>
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
</span>
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
<span class="note title readonly">readonly</span>
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
<span class="summary_desc"><div class='inline'>
|
217
|
+
<p>Returns the value of attribute link_stack.</p>
|
218
|
+
</div></span>
|
219
|
+
|
220
|
+
</li>
|
221
|
+
|
222
|
+
|
223
|
+
<li class="public ">
|
224
|
+
<span class="summary_signature">
|
225
|
+
|
226
|
+
<a href="#logger-instance_method" title="#logger (instance method)">- (Object) <strong>logger</strong> </a>
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
</span>
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
<span class="note title readonly">readonly</span>
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
<span class="summary_desc"><div class='inline'>
|
246
|
+
<p>Returns the value of attribute logger.</p>
|
247
|
+
</div></span>
|
248
|
+
|
249
|
+
</li>
|
250
|
+
|
251
|
+
|
252
|
+
</ul>
|
253
|
+
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
|
258
|
+
<h2>
|
259
|
+
Instance Method Summary
|
260
|
+
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
|
261
|
+
</h2>
|
262
|
+
|
263
|
+
<ul class="summary">
|
264
|
+
|
265
|
+
<li class="public ">
|
266
|
+
<span class="summary_signature">
|
267
|
+
|
268
|
+
<a href="#after-instance_method" title="#after (instance method)">- (Object) <strong>after</strong> </a>
|
269
|
+
|
270
|
+
|
271
|
+
|
272
|
+
</span>
|
273
|
+
|
274
|
+
|
275
|
+
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
<span class="summary_desc"><div class='inline'>
|
283
|
+
<p>Filter run after Tango execution.</p>
|
284
|
+
</div></span>
|
285
|
+
|
286
|
+
</li>
|
287
|
+
|
288
|
+
|
289
|
+
<li class="public ">
|
290
|
+
<span class="summary_signature">
|
291
|
+
|
292
|
+
<a href="#before-instance_method" title="#before (instance method)">- (Object) <strong>before</strong> </a>
|
293
|
+
|
294
|
+
|
295
|
+
|
296
|
+
</span>
|
297
|
+
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
|
306
|
+
<span class="summary_desc"><div class='inline'>
|
307
|
+
<p>Filter run before Tango execution.</p>
|
308
|
+
</div></span>
|
309
|
+
|
310
|
+
</li>
|
311
|
+
|
312
|
+
|
313
|
+
<li class="public ">
|
314
|
+
<span class="summary_signature">
|
315
|
+
|
316
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">- (Tango::App) <strong>initialize</strong>(config: {}, link_stack: nil, dispatcher: nil, cache: nil, http_client: nil, parser: nil, db_locker: nil, logger: nil) </a>
|
317
|
+
|
318
|
+
|
319
|
+
|
320
|
+
</span>
|
321
|
+
|
322
|
+
|
323
|
+
<span class="note title constructor">constructor</span>
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
|
332
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
333
|
+
|
334
|
+
</li>
|
335
|
+
|
336
|
+
|
337
|
+
<li class="public ">
|
338
|
+
<span class="summary_signature">
|
339
|
+
|
340
|
+
<a href="#register_model-instance_method" title="#register_model (instance method)">- (Object) <strong>register_model</strong>(symbol, model) </a>
|
341
|
+
|
342
|
+
|
343
|
+
|
344
|
+
</span>
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
|
354
|
+
<span class="summary_desc"><div class='inline'>
|
355
|
+
<p>Register new resource model.</p>
|
356
|
+
</div></span>
|
357
|
+
|
358
|
+
</li>
|
359
|
+
|
360
|
+
|
361
|
+
<li class="public ">
|
362
|
+
<span class="summary_signature">
|
363
|
+
|
364
|
+
<a href="#register_operator-instance_method" title="#register_operator (instance method)">- (Object) <strong>register_operator</strong>(symbol, operator) </a>
|
365
|
+
|
366
|
+
|
367
|
+
|
368
|
+
</span>
|
369
|
+
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
|
378
|
+
<span class="summary_desc"><div class='inline'>
|
379
|
+
<p>Register new resource operator.</p>
|
380
|
+
</div></span>
|
381
|
+
|
382
|
+
</li>
|
383
|
+
|
384
|
+
|
385
|
+
<li class="public ">
|
386
|
+
<span class="summary_signature">
|
387
|
+
|
388
|
+
<a href="#run-instance_method" title="#run (instance method)">- (Integer) <strong>run</strong> </a>
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
</span>
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
|
402
|
+
<span class="summary_desc"><div class='inline'>
|
403
|
+
<p>Run ETL process.</p>
|
404
|
+
</div></span>
|
405
|
+
|
406
|
+
</li>
|
407
|
+
|
408
|
+
|
409
|
+
</ul>
|
410
|
+
|
411
|
+
|
412
|
+
<div id="constructor_details" class="method_details_list">
|
413
|
+
<h2>Constructor Details</h2>
|
414
|
+
|
415
|
+
<div class="method_details first">
|
416
|
+
<h3 class="signature first" id="initialize-instance_method">
|
417
|
+
|
418
|
+
- (<tt><span class='object_link'><a href="" title="Tango::App (class)">Tango::App</a></span></tt>) <strong>initialize</strong>(config: {}, link_stack: nil, dispatcher: nil, cache: nil, http_client: nil, parser: nil, db_locker: nil, logger: nil)
|
419
|
+
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
|
424
|
+
</h3><div class="docstring">
|
425
|
+
<div class="discussion">
|
426
|
+
|
427
|
+
|
428
|
+
</div>
|
429
|
+
</div>
|
430
|
+
<div class="tags">
|
431
|
+
<p class="tag_title">Parameters:</p>
|
432
|
+
<ul class="param">
|
433
|
+
|
434
|
+
<li>
|
435
|
+
|
436
|
+
<span class='name'>link_stack</span>
|
437
|
+
|
438
|
+
|
439
|
+
<span class='type'>(<tt><span class='object_link'><a href="LinkStack.html" title="Tango::LinkStack (class)">Tango::LinkStack</a></span></tt>)</span>
|
440
|
+
|
441
|
+
|
442
|
+
|
443
|
+
</li>
|
444
|
+
|
445
|
+
<li>
|
446
|
+
|
447
|
+
<span class='name'>dispatcher</span>
|
448
|
+
|
449
|
+
|
450
|
+
<span class='type'>(<tt>Tango::Etl::Dispatcher</tt>)</span>
|
451
|
+
|
452
|
+
|
453
|
+
|
454
|
+
</li>
|
455
|
+
|
456
|
+
<li>
|
457
|
+
|
458
|
+
<span class='name'>cache</span>
|
459
|
+
|
460
|
+
|
461
|
+
<span class='type'>(<tt>Tango::Resources::Cache</tt>)</span>
|
462
|
+
|
463
|
+
|
464
|
+
|
465
|
+
</li>
|
466
|
+
|
467
|
+
<li>
|
468
|
+
|
469
|
+
<span class='name'>http_client</span>
|
470
|
+
|
471
|
+
|
472
|
+
<span class='type'>(<tt>Object</tt>)</span>
|
473
|
+
|
474
|
+
|
475
|
+
|
476
|
+
—
|
477
|
+
<div class='inline'>
|
478
|
+
<p>Must implement get method</p>
|
479
|
+
</div>
|
480
|
+
|
481
|
+
</li>
|
482
|
+
|
483
|
+
<li>
|
484
|
+
|
485
|
+
<span class='name'>parser</span>
|
486
|
+
|
487
|
+
|
488
|
+
<span class='type'>(<tt>Object</tt>)</span>
|
489
|
+
|
490
|
+
|
491
|
+
|
492
|
+
—
|
493
|
+
<div class='inline'>
|
494
|
+
<p>Must implement parse method</p>
|
495
|
+
</div>
|
496
|
+
|
497
|
+
</li>
|
498
|
+
|
499
|
+
<li>
|
500
|
+
|
501
|
+
<span class='name'>db_locker</span>
|
502
|
+
|
503
|
+
|
504
|
+
<span class='type'>(<tt><span class='object_link'><a href="DatabaseLocker.html" title="Tango::DatabaseLocker (class)">DatabaseLocker</a></span></tt>)</span>
|
505
|
+
|
506
|
+
|
507
|
+
|
508
|
+
</li>
|
509
|
+
|
510
|
+
<li>
|
511
|
+
|
512
|
+
<span class='name'>logger</span>
|
513
|
+
|
514
|
+
|
515
|
+
<span class='type'>(<tt>Logger</tt>)</span>
|
516
|
+
|
517
|
+
|
518
|
+
|
519
|
+
</li>
|
520
|
+
|
521
|
+
</ul>
|
522
|
+
|
523
|
+
|
524
|
+
</div><table class="source_code">
|
525
|
+
<tr>
|
526
|
+
<td>
|
527
|
+
<pre class="lines">
|
528
|
+
|
529
|
+
|
530
|
+
20
|
531
|
+
21
|
532
|
+
22
|
533
|
+
23
|
534
|
+
24
|
535
|
+
25
|
536
|
+
26
|
537
|
+
27
|
538
|
+
28
|
539
|
+
29
|
540
|
+
30
|
541
|
+
31
|
542
|
+
32
|
543
|
+
33
|
544
|
+
34
|
545
|
+
35
|
546
|
+
36
|
547
|
+
37
|
548
|
+
38</pre>
|
549
|
+
</td>
|
550
|
+
<td>
|
551
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 20</span>
|
552
|
+
|
553
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span> <span class='label'>config:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>link_stack:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>dispatcher:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>cache:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>http_client:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>parser:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>db_locker:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>logger:</span> <span class='kw'>nil</span> <span class='rparen'>)</span>
|
554
|
+
|
555
|
+
<span class='comment'># Init app properties
|
556
|
+
</span> <span class='ivar'>@models</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
557
|
+
<span class='ivar'>@operators</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
558
|
+
|
559
|
+
<span class='comment'># Set config
|
560
|
+
</span> <span class='ivar'>@config</span> <span class='op'>=</span> <span class='id identifier rubyid_config'>config</span>
|
561
|
+
|
562
|
+
<span class='comment'># Set dependencies
|
563
|
+
</span> <span class='ivar'>@link_stack</span> <span class='op'>=</span> <span class='id identifier rubyid_link_stack'>link_stack</span> <span class='op'>||</span> <span class='const'>LinkStack</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span> <span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>target_url</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='rparen'>)</span>
|
564
|
+
<span class='ivar'>@dispatcher</span> <span class='op'>=</span> <span class='id identifier rubyid_dispatcher'>dispatcher</span> <span class='op'>||</span> <span class='const'>ETL</span><span class='op'>::</span><span class='const'>Dispatcher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
565
|
+
<span class='ivar'>@cache</span> <span class='op'>=</span> <span class='id identifier rubyid_cache'>cache</span> <span class='op'>||</span> <span class='const'>Resource</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span> <span class='const'>Resource</span><span class='op'>::</span><span class='const'>Buffer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='rparen'>)</span>
|
566
|
+
<span class='ivar'>@http_client</span> <span class='op'>=</span> <span class='id identifier rubyid_http_client'>http_client</span> <span class='op'>||</span> <span class='const'>HTTParty</span>
|
567
|
+
<span class='ivar'>@parser</span> <span class='op'>=</span> <span class='id identifier rubyid_parser'>parser</span> <span class='op'>||</span> <span class='const'>Nokogiri</span><span class='op'>::</span><span class='const'>HTML</span>
|
568
|
+
<span class='ivar'>@db_locker</span> <span class='op'>=</span> <span class='id identifier rubyid_db_locker'>db_locker</span> <span class='op'>||</span> <span class='const'>DatabaseLocker</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span> <span class='const'>Multidb</span><span class='period'>.</span><span class='id identifier rubyid_databases'>databases</span> <span class='rparen'>)</span>
|
569
|
+
<span class='ivar'>@logger</span> <span class='op'>=</span> <span class='id identifier rubyid_logger'>logger</span> <span class='op'>||</span> <span class='const'>Logger</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span> <span class='const'>STDOUT</span> <span class='rparen'>)</span>
|
570
|
+
|
571
|
+
<span class='kw'>end</span></pre>
|
572
|
+
</td>
|
573
|
+
</tr>
|
574
|
+
</table>
|
575
|
+
</div>
|
576
|
+
|
577
|
+
</div>
|
578
|
+
|
579
|
+
<div id="instance_attr_details" class="attr_details">
|
580
|
+
<h2>Instance Attribute Details</h2>
|
581
|
+
|
582
|
+
|
583
|
+
<span id=""></span>
|
584
|
+
<div class="method_details first">
|
585
|
+
<h3 class="signature first" id="config-instance_method">
|
586
|
+
|
587
|
+
- (<tt>Object</tt>) <strong>config</strong> <span class="extras">(readonly)</span>
|
588
|
+
|
589
|
+
|
590
|
+
|
591
|
+
|
592
|
+
|
593
|
+
</h3><div class="docstring">
|
594
|
+
<div class="discussion">
|
595
|
+
|
596
|
+
<p>Returns the value of attribute config</p>
|
597
|
+
|
598
|
+
|
599
|
+
</div>
|
600
|
+
</div>
|
601
|
+
<div class="tags">
|
602
|
+
|
603
|
+
|
604
|
+
</div><table class="source_code">
|
605
|
+
<tr>
|
606
|
+
<td>
|
607
|
+
<pre class="lines">
|
608
|
+
|
609
|
+
|
610
|
+
10
|
611
|
+
11
|
612
|
+
12</pre>
|
613
|
+
</td>
|
614
|
+
<td>
|
615
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 10</span>
|
616
|
+
|
617
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_config'>config</span>
|
618
|
+
<span class='ivar'>@config</span>
|
619
|
+
<span class='kw'>end</span></pre>
|
620
|
+
</td>
|
621
|
+
</tr>
|
622
|
+
</table>
|
623
|
+
</div>
|
624
|
+
|
625
|
+
|
626
|
+
<span id=""></span>
|
627
|
+
<div class="method_details ">
|
628
|
+
<h3 class="signature " id="dispatcher-instance_method">
|
629
|
+
|
630
|
+
- (<tt>Object</tt>) <strong>dispatcher</strong> <span class="extras">(readonly)</span>
|
631
|
+
|
632
|
+
|
633
|
+
|
634
|
+
|
635
|
+
|
636
|
+
</h3><div class="docstring">
|
637
|
+
<div class="discussion">
|
638
|
+
|
639
|
+
<p>Returns the value of attribute dispatcher</p>
|
640
|
+
|
641
|
+
|
642
|
+
</div>
|
643
|
+
</div>
|
644
|
+
<div class="tags">
|
645
|
+
|
646
|
+
|
647
|
+
</div><table class="source_code">
|
648
|
+
<tr>
|
649
|
+
<td>
|
650
|
+
<pre class="lines">
|
651
|
+
|
652
|
+
|
653
|
+
10
|
654
|
+
11
|
655
|
+
12</pre>
|
656
|
+
</td>
|
657
|
+
<td>
|
658
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 10</span>
|
659
|
+
|
660
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_dispatcher'>dispatcher</span>
|
661
|
+
<span class='ivar'>@dispatcher</span>
|
662
|
+
<span class='kw'>end</span></pre>
|
663
|
+
</td>
|
664
|
+
</tr>
|
665
|
+
</table>
|
666
|
+
</div>
|
667
|
+
|
668
|
+
|
669
|
+
<span id=""></span>
|
670
|
+
<div class="method_details ">
|
671
|
+
<h3 class="signature " id="link_stack-instance_method">
|
672
|
+
|
673
|
+
- (<tt>Object</tt>) <strong>link_stack</strong> <span class="extras">(readonly)</span>
|
674
|
+
|
675
|
+
|
676
|
+
|
677
|
+
|
678
|
+
|
679
|
+
</h3><div class="docstring">
|
680
|
+
<div class="discussion">
|
681
|
+
|
682
|
+
<p>Returns the value of attribute link_stack</p>
|
683
|
+
|
684
|
+
|
685
|
+
</div>
|
686
|
+
</div>
|
687
|
+
<div class="tags">
|
688
|
+
|
689
|
+
|
690
|
+
</div><table class="source_code">
|
691
|
+
<tr>
|
692
|
+
<td>
|
693
|
+
<pre class="lines">
|
694
|
+
|
695
|
+
|
696
|
+
10
|
697
|
+
11
|
698
|
+
12</pre>
|
699
|
+
</td>
|
700
|
+
<td>
|
701
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 10</span>
|
702
|
+
|
703
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_link_stack'>link_stack</span>
|
704
|
+
<span class='ivar'>@link_stack</span>
|
705
|
+
<span class='kw'>end</span></pre>
|
706
|
+
</td>
|
707
|
+
</tr>
|
708
|
+
</table>
|
709
|
+
</div>
|
710
|
+
|
711
|
+
|
712
|
+
<span id=""></span>
|
713
|
+
<div class="method_details ">
|
714
|
+
<h3 class="signature " id="logger-instance_method">
|
715
|
+
|
716
|
+
- (<tt>Object</tt>) <strong>logger</strong> <span class="extras">(readonly)</span>
|
717
|
+
|
718
|
+
|
719
|
+
|
720
|
+
|
721
|
+
|
722
|
+
</h3><div class="docstring">
|
723
|
+
<div class="discussion">
|
724
|
+
|
725
|
+
<p>Returns the value of attribute logger</p>
|
726
|
+
|
727
|
+
|
728
|
+
</div>
|
729
|
+
</div>
|
730
|
+
<div class="tags">
|
731
|
+
|
732
|
+
|
733
|
+
</div><table class="source_code">
|
734
|
+
<tr>
|
735
|
+
<td>
|
736
|
+
<pre class="lines">
|
737
|
+
|
738
|
+
|
739
|
+
10
|
740
|
+
11
|
741
|
+
12</pre>
|
742
|
+
</td>
|
743
|
+
<td>
|
744
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 10</span>
|
745
|
+
|
746
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_logger'>logger</span>
|
747
|
+
<span class='ivar'>@logger</span>
|
748
|
+
<span class='kw'>end</span></pre>
|
749
|
+
</td>
|
750
|
+
</tr>
|
751
|
+
</table>
|
752
|
+
</div>
|
753
|
+
|
754
|
+
</div>
|
755
|
+
|
756
|
+
|
757
|
+
<div id="instance_method_details" class="method_details_list">
|
758
|
+
<h2>Instance Method Details</h2>
|
759
|
+
|
760
|
+
|
761
|
+
<div class="method_details first">
|
762
|
+
<h3 class="signature first" id="after-instance_method">
|
763
|
+
|
764
|
+
- (<tt>Object</tt>) <strong>after</strong>
|
765
|
+
|
766
|
+
|
767
|
+
|
768
|
+
|
769
|
+
|
770
|
+
</h3><div class="docstring">
|
771
|
+
<div class="discussion">
|
772
|
+
|
773
|
+
<p>Filter run after Tango execution</p>
|
774
|
+
|
775
|
+
|
776
|
+
</div>
|
777
|
+
</div>
|
778
|
+
<div class="tags">
|
779
|
+
|
780
|
+
|
781
|
+
</div><table class="source_code">
|
782
|
+
<tr>
|
783
|
+
<td>
|
784
|
+
<pre class="lines">
|
785
|
+
|
786
|
+
|
787
|
+
45
|
788
|
+
46</pre>
|
789
|
+
</td>
|
790
|
+
<td>
|
791
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 45</span>
|
792
|
+
|
793
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_after'>after</span>
|
794
|
+
<span class='kw'>end</span></pre>
|
795
|
+
</td>
|
796
|
+
</tr>
|
797
|
+
</table>
|
798
|
+
</div>
|
799
|
+
|
800
|
+
<div class="method_details ">
|
801
|
+
<h3 class="signature " id="before-instance_method">
|
802
|
+
|
803
|
+
- (<tt>Object</tt>) <strong>before</strong>
|
804
|
+
|
805
|
+
|
806
|
+
|
807
|
+
|
808
|
+
|
809
|
+
</h3><div class="docstring">
|
810
|
+
<div class="discussion">
|
811
|
+
|
812
|
+
<p>Filter run before Tango execution</p>
|
813
|
+
|
814
|
+
|
815
|
+
</div>
|
816
|
+
</div>
|
817
|
+
<div class="tags">
|
818
|
+
|
819
|
+
|
820
|
+
</div><table class="source_code">
|
821
|
+
<tr>
|
822
|
+
<td>
|
823
|
+
<pre class="lines">
|
824
|
+
|
825
|
+
|
826
|
+
41
|
827
|
+
42</pre>
|
828
|
+
</td>
|
829
|
+
<td>
|
830
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 41</span>
|
831
|
+
|
832
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_before'>before</span>
|
833
|
+
<span class='kw'>end</span></pre>
|
834
|
+
</td>
|
835
|
+
</tr>
|
836
|
+
</table>
|
837
|
+
</div>
|
838
|
+
|
839
|
+
<div class="method_details ">
|
840
|
+
<h3 class="signature " id="register_model-instance_method">
|
841
|
+
|
842
|
+
- (<tt>Object</tt>) <strong>register_model</strong>(symbol, model)
|
843
|
+
|
844
|
+
|
845
|
+
|
846
|
+
|
847
|
+
|
848
|
+
</h3><div class="docstring">
|
849
|
+
<div class="discussion">
|
850
|
+
|
851
|
+
<p>Register new resource model</p>
|
852
|
+
|
853
|
+
|
854
|
+
</div>
|
855
|
+
</div>
|
856
|
+
<div class="tags">
|
857
|
+
<p class="tag_title">Parameters:</p>
|
858
|
+
<ul class="param">
|
859
|
+
|
860
|
+
<li>
|
861
|
+
|
862
|
+
<span class='name'>symbol</span>
|
863
|
+
|
864
|
+
|
865
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
866
|
+
|
867
|
+
|
868
|
+
|
869
|
+
</li>
|
870
|
+
|
871
|
+
<li>
|
872
|
+
|
873
|
+
<span class='name'>model</span>
|
874
|
+
|
875
|
+
|
876
|
+
<span class='type'>(<tt>Class</tt>)</span>
|
877
|
+
|
878
|
+
|
879
|
+
|
880
|
+
</li>
|
881
|
+
|
882
|
+
</ul>
|
883
|
+
|
884
|
+
|
885
|
+
</div><table class="source_code">
|
886
|
+
<tr>
|
887
|
+
<td>
|
888
|
+
<pre class="lines">
|
889
|
+
|
890
|
+
|
891
|
+
52
|
892
|
+
53
|
893
|
+
54
|
894
|
+
55
|
895
|
+
56
|
896
|
+
57
|
897
|
+
58
|
898
|
+
59
|
899
|
+
60
|
900
|
+
61</pre>
|
901
|
+
</td>
|
902
|
+
<td>
|
903
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 52</span>
|
904
|
+
|
905
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_register_model'>register_model</span><span class='lparen'>(</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_model'>model</span> <span class='rparen'>)</span>
|
906
|
+
|
907
|
+
<span class='ivar'>@models</span><span class='lbracket'>[</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_model'>model</span>
|
908
|
+
|
909
|
+
<span class='comment'># Truncate table of non persistent model
|
910
|
+
</span> <span class='kw'>unless</span> <span class='id identifier rubyid_model'>model</span><span class='period'>.</span><span class='id identifier rubyid_persistent?'>persistent?</span>
|
911
|
+
<span class='const'>ActiveRecord</span><span class='op'>::</span><span class='const'>Base</span><span class='period'>.</span><span class='id identifier rubyid_connection'>connection</span><span class='period'>.</span><span class='id identifier rubyid_execute'>execute</span><span class='lparen'>(</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>TRUNCATE </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_model'>model</span><span class='period'>.</span><span class='id identifier rubyid_table_name'>table_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span> <span class='rparen'>)</span>
|
912
|
+
<span class='kw'>end</span>
|
913
|
+
|
914
|
+
<span class='kw'>end</span></pre>
|
915
|
+
</td>
|
916
|
+
</tr>
|
917
|
+
</table>
|
918
|
+
</div>
|
919
|
+
|
920
|
+
<div class="method_details ">
|
921
|
+
<h3 class="signature " id="register_operator-instance_method">
|
922
|
+
|
923
|
+
- (<tt>Object</tt>) <strong>register_operator</strong>(symbol, operator)
|
924
|
+
|
925
|
+
|
926
|
+
|
927
|
+
|
928
|
+
|
929
|
+
</h3><div class="docstring">
|
930
|
+
<div class="discussion">
|
931
|
+
|
932
|
+
<p>Register new resource operator</p>
|
933
|
+
|
934
|
+
|
935
|
+
</div>
|
936
|
+
</div>
|
937
|
+
<div class="tags">
|
938
|
+
<p class="tag_title">Parameters:</p>
|
939
|
+
<ul class="param">
|
940
|
+
|
941
|
+
<li>
|
942
|
+
|
943
|
+
<span class='name'>symbol</span>
|
944
|
+
|
945
|
+
|
946
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
947
|
+
|
948
|
+
|
949
|
+
|
950
|
+
</li>
|
951
|
+
|
952
|
+
<li>
|
953
|
+
|
954
|
+
<span class='name'>operator</span>
|
955
|
+
|
956
|
+
|
957
|
+
<span class='type'>(<tt>Class</tt>)</span>
|
958
|
+
|
959
|
+
|
960
|
+
|
961
|
+
</li>
|
962
|
+
|
963
|
+
</ul>
|
964
|
+
|
965
|
+
|
966
|
+
</div><table class="source_code">
|
967
|
+
<tr>
|
968
|
+
<td>
|
969
|
+
<pre class="lines">
|
970
|
+
|
971
|
+
|
972
|
+
67
|
973
|
+
68
|
974
|
+
69
|
975
|
+
70
|
976
|
+
71
|
977
|
+
72
|
978
|
+
73
|
979
|
+
74
|
980
|
+
75
|
981
|
+
76</pre>
|
982
|
+
</td>
|
983
|
+
<td>
|
984
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 67</span>
|
985
|
+
|
986
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_register_operator'>register_operator</span><span class='lparen'>(</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_operator'>operator</span> <span class='rparen'>)</span>
|
987
|
+
|
988
|
+
<span class='ivar'>@operators</span><span class='lbracket'>[</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_operator'>operator</span>
|
989
|
+
|
990
|
+
<span class='comment'># Register operator with resource cache system
|
991
|
+
</span> <span class='ivar'>@cache</span><span class='period'>.</span><span class='id identifier rubyid_register'>register</span><span class='lparen'>(</span> <span class='id identifier rubyid_symbol'>symbol</span> <span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_resource'>resource</span><span class='op'>|</span>
|
992
|
+
<span class='id identifier rubyid_operator'>operator</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span> <span class='id identifier rubyid_resource'>resource</span> <span class='rparen'>)</span>
|
993
|
+
<span class='kw'>end</span>
|
994
|
+
|
995
|
+
<span class='kw'>end</span></pre>
|
996
|
+
</td>
|
997
|
+
</tr>
|
998
|
+
</table>
|
999
|
+
</div>
|
1000
|
+
|
1001
|
+
<div class="method_details ">
|
1002
|
+
<h3 class="signature " id="run-instance_method">
|
1003
|
+
|
1004
|
+
- (<tt>Integer</tt>) <strong>run</strong>
|
1005
|
+
|
1006
|
+
|
1007
|
+
|
1008
|
+
|
1009
|
+
|
1010
|
+
</h3><div class="docstring">
|
1011
|
+
<div class="discussion">
|
1012
|
+
|
1013
|
+
<p>Run ETL process</p>
|
1014
|
+
|
1015
|
+
|
1016
|
+
</div>
|
1017
|
+
</div>
|
1018
|
+
<div class="tags">
|
1019
|
+
<p class="tag_title">Parameters:</p>
|
1020
|
+
<ul class="param">
|
1021
|
+
|
1022
|
+
<li>
|
1023
|
+
|
1024
|
+
<span class='name'>link_stack</span>
|
1025
|
+
|
1026
|
+
|
1027
|
+
<span class='type'>(<tt><span class='object_link'><a href="LinkStack.html" title="Tango::LinkStack (class)">Tango::LinkStack</a></span></tt>)</span>
|
1028
|
+
|
1029
|
+
|
1030
|
+
|
1031
|
+
</li>
|
1032
|
+
|
1033
|
+
<li>
|
1034
|
+
|
1035
|
+
<span class='name'>dispatcher</span>
|
1036
|
+
|
1037
|
+
|
1038
|
+
<span class='type'>(<tt>Tango::Etl::Dispatcher</tt>)</span>
|
1039
|
+
|
1040
|
+
|
1041
|
+
|
1042
|
+
</li>
|
1043
|
+
|
1044
|
+
<li>
|
1045
|
+
|
1046
|
+
<span class='name'>cache</span>
|
1047
|
+
|
1048
|
+
|
1049
|
+
<span class='type'>(<tt>Tango::Resources::Cache</tt>)</span>
|
1050
|
+
|
1051
|
+
|
1052
|
+
|
1053
|
+
</li>
|
1054
|
+
|
1055
|
+
<li>
|
1056
|
+
|
1057
|
+
<span class='name'>http_client</span>
|
1058
|
+
|
1059
|
+
|
1060
|
+
<span class='type'>(<tt>Object</tt>)</span>
|
1061
|
+
|
1062
|
+
|
1063
|
+
|
1064
|
+
—
|
1065
|
+
<div class='inline'>
|
1066
|
+
<p>Must implement get method</p>
|
1067
|
+
</div>
|
1068
|
+
|
1069
|
+
</li>
|
1070
|
+
|
1071
|
+
<li>
|
1072
|
+
|
1073
|
+
<span class='name'>parser</span>
|
1074
|
+
|
1075
|
+
|
1076
|
+
<span class='type'>(<tt>Object</tt>)</span>
|
1077
|
+
|
1078
|
+
|
1079
|
+
|
1080
|
+
—
|
1081
|
+
<div class='inline'>
|
1082
|
+
<p>Must implement parse method</p>
|
1083
|
+
</div>
|
1084
|
+
|
1085
|
+
</li>
|
1086
|
+
|
1087
|
+
<li>
|
1088
|
+
|
1089
|
+
<span class='name'>logger</span>
|
1090
|
+
|
1091
|
+
|
1092
|
+
<span class='type'>(<tt>Logger</tt>)</span>
|
1093
|
+
|
1094
|
+
|
1095
|
+
|
1096
|
+
</li>
|
1097
|
+
|
1098
|
+
</ul>
|
1099
|
+
|
1100
|
+
<p class="tag_title">Returns:</p>
|
1101
|
+
<ul class="return">
|
1102
|
+
|
1103
|
+
<li>
|
1104
|
+
|
1105
|
+
|
1106
|
+
<span class='type'>(<tt>Integer</tt>)</span>
|
1107
|
+
|
1108
|
+
|
1109
|
+
|
1110
|
+
</li>
|
1111
|
+
|
1112
|
+
</ul>
|
1113
|
+
|
1114
|
+
</div><table class="source_code">
|
1115
|
+
<tr>
|
1116
|
+
<td>
|
1117
|
+
<pre class="lines">
|
1118
|
+
|
1119
|
+
|
1120
|
+
87
|
1121
|
+
88
|
1122
|
+
89
|
1123
|
+
90
|
1124
|
+
91
|
1125
|
+
92
|
1126
|
+
93
|
1127
|
+
94
|
1128
|
+
95
|
1129
|
+
96
|
1130
|
+
97
|
1131
|
+
98
|
1132
|
+
99
|
1133
|
+
100
|
1134
|
+
101
|
1135
|
+
102
|
1136
|
+
103
|
1137
|
+
104
|
1138
|
+
105
|
1139
|
+
106
|
1140
|
+
107
|
1141
|
+
108
|
1142
|
+
109
|
1143
|
+
110
|
1144
|
+
111
|
1145
|
+
112
|
1146
|
+
113
|
1147
|
+
114
|
1148
|
+
115
|
1149
|
+
116
|
1150
|
+
117
|
1151
|
+
118
|
1152
|
+
119
|
1153
|
+
120
|
1154
|
+
121
|
1155
|
+
122
|
1156
|
+
123
|
1157
|
+
124
|
1158
|
+
125
|
1159
|
+
126
|
1160
|
+
127
|
1161
|
+
128
|
1162
|
+
129
|
1163
|
+
130
|
1164
|
+
131
|
1165
|
+
132
|
1166
|
+
133
|
1167
|
+
134
|
1168
|
+
135
|
1169
|
+
136
|
1170
|
+
137
|
1171
|
+
138
|
1172
|
+
139
|
1173
|
+
140
|
1174
|
+
141
|
1175
|
+
142
|
1176
|
+
143
|
1177
|
+
144
|
1178
|
+
145
|
1179
|
+
146
|
1180
|
+
147
|
1181
|
+
148
|
1182
|
+
149
|
1183
|
+
150
|
1184
|
+
151
|
1185
|
+
152
|
1186
|
+
153
|
1187
|
+
154
|
1188
|
+
155
|
1189
|
+
156
|
1190
|
+
157
|
1191
|
+
158
|
1192
|
+
159
|
1193
|
+
160
|
1194
|
+
161
|
1195
|
+
162
|
1196
|
+
163
|
1197
|
+
164
|
1198
|
+
165
|
1199
|
+
166
|
1200
|
+
167
|
1201
|
+
168
|
1202
|
+
169
|
1203
|
+
170
|
1204
|
+
171
|
1205
|
+
172
|
1206
|
+
173
|
1207
|
+
174
|
1208
|
+
175
|
1209
|
+
176
|
1210
|
+
177
|
1211
|
+
178
|
1212
|
+
179
|
1213
|
+
180
|
1214
|
+
181
|
1215
|
+
182
|
1216
|
+
183</pre>
|
1217
|
+
</td>
|
1218
|
+
<td>
|
1219
|
+
<pre class="code"><span class="info file"># File 'lib/tango/app.rb', line 87</span>
|
1220
|
+
|
1221
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_run'>run</span>
|
1222
|
+
|
1223
|
+
<span class='comment'># Save beginning time
|
1224
|
+
</span> <span class='id identifier rubyid_start_time'>start_time</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span>
|
1225
|
+
|
1226
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Running Tango v.</span><span class='embexpr_beg'>#{</span><span class='const'>Tango</span><span class='op'>::</span><span class='const'>VERSION</span><span class='embexpr_end'>}</span><span class='tstring_content'> ...</span><span class='tstring_end'>"</span></span>
|
1227
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Target: </span><span class='embexpr_beg'>#{</span><span class='ivar'>@link_stack</span><span class='period'>.</span><span class='id identifier rubyid_host'>host</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>"</span></span>
|
1228
|
+
|
1229
|
+
<span class='comment'># Use next unlocked database
|
1230
|
+
</span> <span class='const'>Multidb</span><span class='period'>.</span><span class='id identifier rubyid_use'>use</span><span class='lparen'>(</span> <span class='ivar'>@db_locker</span><span class='period'>.</span><span class='id identifier rubyid_unlocked'>unlocked</span> <span class='rparen'>)</span>
|
1231
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Using database '</span><span class='embexpr_beg'>#{</span><span class='ivar'>@db_locker</span><span class='period'>.</span><span class='id identifier rubyid_unlocked'>unlocked</span><span class='embexpr_end'>}</span><span class='tstring_content'>'.</span><span class='tstring_end'>"</span></span>
|
1232
|
+
|
1233
|
+
<span class='comment'># Run before filter
|
1234
|
+
</span> <span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Loading cache ...</span><span class='tstring_end'>"</span></span>
|
1235
|
+
<span class='id identifier rubyid_load_cache'>load_cache</span>
|
1236
|
+
|
1237
|
+
<span class='comment'># Run before filter
|
1238
|
+
</span> <span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Running before callback ...</span><span class='tstring_end'>"</span></span>
|
1239
|
+
<span class='id identifier rubyid_before'>before</span>
|
1240
|
+
|
1241
|
+
<span class='comment'># Init counter of crawled links
|
1242
|
+
</span> <span class='id identifier rubyid_links_counter'>links_counter</span> <span class='op'>=</span> <span class='int'>0</span>
|
1243
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Tango starts crawling ...</span><span class='tstring_end'>"</span></span>
|
1244
|
+
|
1245
|
+
<span class='comment'># Start crawling website
|
1246
|
+
</span> <span class='kw'>while</span><span class='lparen'>(</span> <span class='ivar'>@link_stack</span><span class='period'>.</span><span class='id identifier rubyid_has_links?'>has_links?</span> <span class='rparen'>)</span>
|
1247
|
+
|
1248
|
+
<span class='comment'># Get a link from the stack
|
1249
|
+
</span> <span class='id identifier rubyid_link'>link</span> <span class='op'>=</span> <span class='ivar'>@link_stack</span><span class='period'>.</span><span class='id identifier rubyid_shift'>shift</span>
|
1250
|
+
|
1251
|
+
<span class='comment'># Skip iteration if no handler found
|
1252
|
+
</span> <span class='kw'>if</span> <span class='op'>!</span> <span class='id identifier rubyid_handler_klass'>handler_klass</span> <span class='op'>=</span> <span class='ivar'>@dispatcher</span><span class='period'>.</span><span class='id identifier rubyid_find_handler'>find_handler</span><span class='lparen'>(</span> <span class='id identifier rubyid_link'>link</span> <span class='rparen'>)</span>
|
1253
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>No handler for link: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_link'>link</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>"</span></span>
|
1254
|
+
<span class='kw'>next</span>
|
1255
|
+
<span class='kw'>end</span>
|
1256
|
+
|
1257
|
+
<span class='comment'># Try to get contents of the link
|
1258
|
+
</span> <span class='kw'>begin</span>
|
1259
|
+
<span class='id identifier rubyid_response'>response</span> <span class='op'>=</span> <span class='ivar'>@http_client</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span> <span class='ivar'>@link_stack</span><span class='period'>.</span><span class='id identifier rubyid_host'>host</span> <span class='op'>+</span> <span class='id identifier rubyid_link'>link</span> <span class='rparen'>)</span>
|
1260
|
+
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
1261
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Could not download contents of </span><span class='embexpr_beg'>#{</span><span class='ivar'>@link_stack</span><span class='period'>.</span><span class='id identifier rubyid_host'>host</span> <span class='op'>+</span> <span class='id identifier rubyid_link'>link</span><span class='embexpr_end'>}</span><span class='tstring_content'> link.</span><span class='tstring_end'>"</span></span><span class='semicolon'>;</span> <span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span>
|
1262
|
+
<span class='kw'>next</span>
|
1263
|
+
<span class='kw'>end</span>
|
1264
|
+
|
1265
|
+
<span class='comment'># Continue only when response has code 200 or 201
|
1266
|
+
</span> <span class='kw'>if</span> <span class='op'>!</span> <span class='lbracket'>[</span> <span class='int'>200</span><span class='comma'>,</span> <span class='int'>201</span> <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span> <span class='id identifier rubyid_response'>response</span><span class='period'>.</span><span class='id identifier rubyid_code'>code</span> <span class='rparen'>)</span>
|
1267
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Response code for link </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_link'>link</span><span class='embexpr_end'>}</span><span class='tstring_content'> is </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_response'>response</span><span class='period'>.</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'>. Only code 200 is accepted.</span><span class='tstring_end'>"</span></span>
|
1268
|
+
<span class='kw'>next</span>
|
1269
|
+
<span class='kw'>end</span>
|
1270
|
+
|
1271
|
+
<span class='comment'># Parse response contents
|
1272
|
+
</span> <span class='id identifier rubyid_document'>document</span> <span class='op'>=</span> <span class='ivar'>@parser</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span> <span class='id identifier rubyid_response'>response</span><span class='period'>.</span><span class='id identifier rubyid_body'>body</span> <span class='rparen'>)</span>
|
1273
|
+
<span class='comment'># Init handler
|
1274
|
+
</span> <span class='id identifier rubyid_handler'>handler</span> <span class='op'>=</span> <span class='id identifier rubyid_handler_klass'>handler_klass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span> <span class='id identifier rubyid_link'>link</span><span class='comma'>,</span> <span class='id identifier rubyid_document'>document</span><span class='comma'>,</span> <span class='ivar'>@cache</span> <span class='rparen'>)</span>
|
1275
|
+
|
1276
|
+
<span class='comment'># Append links fetched from handler
|
1277
|
+
</span> <span class='ivar'>@link_stack</span><span class='period'>.</span><span class='id identifier rubyid_append'>append</span><span class='lparen'>(</span> <span class='id identifier rubyid_handler'>handler</span><span class='period'>.</span><span class='id identifier rubyid_links'>links</span> <span class='rparen'>)</span>
|
1278
|
+
|
1279
|
+
<span class='comment'># Try to fire the handler
|
1280
|
+
</span> <span class='kw'>begin</span>
|
1281
|
+
<span class='id identifier rubyid_handler'>handler</span><span class='period'>.</span><span class='id identifier rubyid_trigger'>trigger</span>
|
1282
|
+
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
1283
|
+
<span class='comment'># Log error
|
1284
|
+
</span> <span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Link: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_link'>link</span><span class='embexpr_end'>}</span><span class='tstring_content'>. Handler had some troubles.</span><span class='tstring_end'>"</span></span>
|
1285
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span>
|
1286
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_backtrace'>backtrace</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\n</span><span class='tstring_end'>"</span></span> <span class='rparen'>)</span>
|
1287
|
+
<span class='kw'>else</span>
|
1288
|
+
<span class='id identifier rubyid_links_counter'>links_counter</span> <span class='op'>+=</span> <span class='int'>1</span>
|
1289
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_debug'>debug</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Link: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_link'>link</span><span class='embexpr_end'>}</span><span class='tstring_content'>. Handler triggered successfully.</span><span class='tstring_end'>"</span></span>
|
1290
|
+
<span class='kw'>end</span>
|
1291
|
+
|
1292
|
+
<span class='comment'># Sleep to give crawled server time to breath
|
1293
|
+
</span> <span class='id identifier rubyid_sleep'>sleep</span><span class='lparen'>(</span> <span class='ivar'>@config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>sleep</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='int'>0</span> <span class='rparen'>)</span>
|
1294
|
+
|
1295
|
+
<span class='kw'>end</span>
|
1296
|
+
|
1297
|
+
<span class='comment'># Release buffers
|
1298
|
+
</span> <span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Releasing buffers ...</span><span class='tstring_end'>"</span></span>
|
1299
|
+
<span class='ivar'>@cache</span><span class='period'>.</span><span class='id identifier rubyid_buffer'>buffer</span><span class='period'>.</span><span class='id identifier rubyid_release_all'>release_all</span><span class='lparen'>(</span><span class='rparen'>)</span>
|
1300
|
+
|
1301
|
+
<span class='comment'># Run after filter
|
1302
|
+
</span> <span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Running after callback ...</span><span class='tstring_end'>"</span></span>
|
1303
|
+
<span class='id identifier rubyid_after'>after</span>
|
1304
|
+
|
1305
|
+
<span class='comment'># Lock database used in this Tango iteration
|
1306
|
+
</span> <span class='ivar'>@db_locker</span><span class='period'>.</span><span class='id identifier rubyid_lock'>lock</span><span class='lparen'>(</span> <span class='ivar'>@db_locker</span><span class='period'>.</span><span class='id identifier rubyid_unlocked'>unlocked</span> <span class='rparen'>)</span>
|
1307
|
+
|
1308
|
+
<span class='comment'># Get time of script execution ending
|
1309
|
+
</span> <span class='id identifier rubyid_end_time'>end_time</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span>
|
1310
|
+
|
1311
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Tango crawled </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_links_counter'>links_counter</span><span class='embexpr_end'>}</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='ivar'>@link_stack</span><span class='period'>.</span><span class='id identifier rubyid_shifted'>shifted</span><span class='embexpr_end'>}</span><span class='tstring_content'> links successfully.</span><span class='tstring_end'>"</span></span>
|
1312
|
+
<span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Start time: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_start_time'>start_time</span><span class='embexpr_end'>}</span><span class='tstring_content'>, end time: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_end_time'>end_time</span><span class='embexpr_end'>}</span><span class='tstring_content'>, time elapsed: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_end_time'>end_time</span> <span class='op'>-</span> <span class='id identifier rubyid_start_time'>start_time</span><span class='embexpr_end'>}</span><span class='tstring_content'> seconds.</span><span class='tstring_end'>"</span></span>
|
1313
|
+
|
1314
|
+
<span class='comment'># Close logger
|
1315
|
+
</span> <span class='ivar'>@logger</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
|
1316
|
+
|
1317
|
+
<span class='kw'>end</span></pre>
|
1318
|
+
</td>
|
1319
|
+
</tr>
|
1320
|
+
</table>
|
1321
|
+
</div>
|
1322
|
+
|
1323
|
+
</div>
|
1324
|
+
|
1325
|
+
</div>
|
1326
|
+
|
1327
|
+
<div id="footer">
|
1328
|
+
Generated on Tue Apr 15 02:47:42 2014 by
|
1329
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1330
|
+
0.8.7.4 (ruby-2.0.0).
|
1331
|
+
</div>
|
1332
|
+
|
1333
|
+
</body>
|
1334
|
+
</html>
|