redis_analytics 0.7.1 → 1.0.0
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/Gemfile.lock +1 -1
- data/app/views/layouts/redis_analytics/application.html.erb +3 -3
- data/coverage/index.html +423 -381
- data/lib/redis_analytics/configuration.rb +73 -73
- data/lib/redis_analytics/engine.rb +7 -0
- data/lib/redis_analytics/filter.rb +22 -22
- data/lib/redis_analytics/helpers.rb +58 -58
- data/lib/redis_analytics/metrics.rb +73 -73
- data/lib/redis_analytics/version.rb +3 -3
- data/lib/redis_analytics/visit.rb +96 -96
- data/test/dummy/config/environments/production.rb +1 -1
- data/test/dummy/config/routes.rb +1 -1
- data/test/dummy/log/development.log +1185 -0
- data/test/dummy/log/production.log +5172 -0
- data/test/dummy/public/assets/application-c900658d554ff9f314a2e1b97cd68997.js.gz +0 -0
- data/test/dummy/public/assets/manifest-567012ae8b6f03148f7121062750991f.json +1 -0
- data/test/dummy/public/assets/redis_analytics/redis_analytics-82322234eccfd3d7c55a2034ee41ab2a.js +10785 -0
- data/test/dummy/public/assets/redis_analytics/redis_analytics-82322234eccfd3d7c55a2034ee41ab2a.js.gz +0 -0
- data/test/dummy/public/assets/redis_analytics/redis_analytics-f13abe0904b7483ea8c8c08029e97be3.css +64 -0
- data/test/dummy/public/assets/redis_analytics/redis_analytics-f13abe0904b7483ea8c8c08029e97be3.css.gz +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3b2603753f496fe7b73a04ce200ea6c0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4b838eac074ecce8b8ae19c261677ab6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/63afa0e9c559fa85d5c63b6f37728141 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6d0077b1948c42a8892f40120649d217 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a317f594a79c3dd49a6f88b49aabc1b5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f069f087fa68223029e7fb8547e5bc3b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/006eb7cc017cf18c3ea32cab97f0cc3c +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/192691b9e0bedebfde12633bb3629d0b +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/3b2603753f496fe7b73a04ce200ea6c0 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/4b838eac074ecce8b8ae19c261677ab6 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/5cf60638cb580f41112a5a83eb3b72ef +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/63afa0e9c559fa85d5c63b6f37728141 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/6c2f18f7338d56feecce32780357521c +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/6d0077b1948c42a8892f40120649d217 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/7751914469530dae0646d92467e9d72e +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/8d62150b658b3a8b6fed7e8951f52392 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/8ea331810c31cbe1ba34b91a02f769e7 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/953bc37b1ee0915247dba29773960202 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/9b54afa4ef026f4c288feeec49f2f526 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/a29d0dc527ff5ce1252ccf6370514620 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/a317f594a79c3dd49a6f88b49aabc1b5 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/b01583a39abd5ce0a3d2b2967c6f75bd +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/cfdf466647e83eb93e0d6630e4b51a25 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/d7491740e7757fe2ec57fd6d25461e5c +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/df16db3bfcc56fafc73b853b7999be1f +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/e7bd439b274a2155050b47e5a64ea72d +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/f069f087fa68223029e7fb8547e5bc3b +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/production/sprockets/f9a412f49281cc7e6512f0787f7ba05f +0 -0
- data/vendor/assets/javascripts/redis_analytics/{engine.js → redis_analytics.js} +6 -1
- data/vendor/assets/stylesheets/redis_analytics/{engine.css → redis_analytics.css} +3 -1
- metadata +43 -8
- data/app/views/redis_analytics/application/_footer.html.erb~ +0 -3
- data/app/views/redis_analytics/visits/_unique_visits_line.html.erb~ +0 -26
- data/app/views/redis_analytics/visits/index.html.erb~ +0 -71
- data/test/dummy/public/assets/manifest-5bcba723c313582b1d428fc3bf592b29.json +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b6bc01271a182cc29d5f8a6d43e4a1c69200482e
|
|
4
|
+
data.tar.gz: 2a1e683b22a99c38ffd0d6827d26680a83d5848e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 39505f0c796497ee61aa5af928715995908e239df5b527fe9aef72dadfcd9eccd965e791a37004862b50891b7e33422a84a1d726c166d929ac968bbb830c8b94
|
|
7
|
+
data.tar.gz: 8772f2bd70034c535d449b9aa65e069ecf6e3ac27d236bb9482542dd07c16fce8eed30887d2cec2bbdb846190d6d2039c9ccf66685f6504c0944282d7f9047a2
|
data/Gemfile.lock
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<title>RedisAnalytics</title>
|
|
5
|
-
<%= stylesheet_link_tag "redis_analytics/
|
|
6
|
-
<%= javascript_include_tag "redis_analytics/
|
|
5
|
+
<%= stylesheet_link_tag "redis_analytics/redis_analytics", :media => "all" %>
|
|
6
|
+
<%= javascript_include_tag "redis_analytics/redis_analytics" %>
|
|
7
7
|
<%= csrf_meta_tags %>
|
|
8
8
|
</head>
|
|
9
9
|
<body onload="changeTimeFrame('<%=@range%>')">
|
|
@@ -12,6 +12,6 @@
|
|
|
12
12
|
<%= yield %>
|
|
13
13
|
|
|
14
14
|
<%= render partial: 'footer', layout: false %>
|
|
15
|
-
|
|
15
|
+
<%# javascript_include_tag "redis_analytics/bootstrap.min.js" %>
|
|
16
16
|
</body>
|
|
17
17
|
</html>
|
data/coverage/index.html
CHANGED
|
@@ -14,27 +14,27 @@
|
|
|
14
14
|
<img src="./assets/0.8.0/loading.gif" alt="loading"/>
|
|
15
15
|
</div>
|
|
16
16
|
<div id="wrapper" style="display:none;">
|
|
17
|
-
<div class="timestamp">Generated <abbr class="timeago" title="2014-
|
|
17
|
+
<div class="timestamp">Generated <abbr class="timeago" title="2014-05-17T00:31:13+05:30">2014-05-17T00:31:13+05:30</abbr></div>
|
|
18
18
|
<ul class="group_tabs"></ul>
|
|
19
19
|
|
|
20
20
|
<div id="content">
|
|
21
21
|
<div class="file_list_container" id="AllFiles">
|
|
22
22
|
<h2>
|
|
23
23
|
<span class="group_name">All Files</span>
|
|
24
|
-
(<span class="covered_percent"><span class="red">78.
|
|
24
|
+
(<span class="covered_percent"><span class="red">78.67%</span></span>
|
|
25
25
|
covered at
|
|
26
26
|
<span class="covered_strength">
|
|
27
27
|
<span class="green">
|
|
28
|
-
7.
|
|
28
|
+
7.07
|
|
29
29
|
</span>
|
|
30
30
|
</span> hits/line)
|
|
31
31
|
</h2>
|
|
32
32
|
<a name="AllFiles"></a>
|
|
33
33
|
<div>
|
|
34
34
|
<b>10</b> files in total.
|
|
35
|
-
<b>
|
|
36
|
-
<span class="green"><b>
|
|
37
|
-
<span class="red"><b>
|
|
35
|
+
<b>286</b> relevant lines.
|
|
36
|
+
<span class="green"><b>225</b> lines covered</span> and
|
|
37
|
+
<span class="red"><b>61</b> lines missed </span>
|
|
38
38
|
</div>
|
|
39
39
|
<table class="file_list">
|
|
40
40
|
<thead>
|
|
@@ -72,11 +72,11 @@
|
|
|
72
72
|
|
|
73
73
|
<tr>
|
|
74
74
|
<td class="strong"><a href="#092dae03526444499262440a90b632344ec5532e" class="src_link" title="lib/redis_analytics/engine.rb">lib/redis_analytics/engine.rb</a></td>
|
|
75
|
-
<td class="red strong">
|
|
76
|
-
<td>
|
|
77
|
-
<td>
|
|
78
|
-
<td>
|
|
79
|
-
<td>
|
|
75
|
+
<td class="red strong">75.0 %</td>
|
|
76
|
+
<td>25</td>
|
|
77
|
+
<td>12</td>
|
|
78
|
+
<td>9</td>
|
|
79
|
+
<td>3</td>
|
|
80
80
|
<td>0.8</td>
|
|
81
81
|
</tr>
|
|
82
82
|
|
|
@@ -315,25 +315,25 @@
|
|
|
315
315
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
316
316
|
<span class="hits">1</span>
|
|
317
317
|
|
|
318
|
-
<code class="ruby">
|
|
318
|
+
<code class="ruby">module RedisAnalytics</code>
|
|
319
319
|
</li>
|
|
320
320
|
|
|
321
321
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
322
322
|
<span class="hits">1</span>
|
|
323
323
|
|
|
324
|
-
<code class="ruby">
|
|
324
|
+
<code class="ruby"> module Configuration</code>
|
|
325
325
|
</li>
|
|
326
326
|
|
|
327
327
|
<li class="never" data-hits="" data-linenumber="3">
|
|
328
328
|
|
|
329
329
|
|
|
330
|
-
<code class="ruby">
|
|
330
|
+
<code class="ruby"> # Redis connection instance</code>
|
|
331
331
|
</li>
|
|
332
332
|
|
|
333
333
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
334
334
|
<span class="hits">1</span>
|
|
335
335
|
|
|
336
|
-
<code class="ruby">
|
|
336
|
+
<code class="ruby"> attr_accessor :redis_connection</code>
|
|
337
337
|
</li>
|
|
338
338
|
|
|
339
339
|
<li class="never" data-hits="" data-linenumber="5">
|
|
@@ -345,13 +345,13 @@
|
|
|
345
345
|
<li class="never" data-hits="" data-linenumber="6">
|
|
346
346
|
|
|
347
347
|
|
|
348
|
-
<code class="ruby">
|
|
348
|
+
<code class="ruby"> # Redis namespace for keys</code>
|
|
349
349
|
</li>
|
|
350
350
|
|
|
351
351
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
352
352
|
<span class="hits">1</span>
|
|
353
353
|
|
|
354
|
-
<code class="ruby">
|
|
354
|
+
<code class="ruby"> attr_writer :redis_namespace</code>
|
|
355
355
|
</li>
|
|
356
356
|
|
|
357
357
|
<li class="never" data-hits="" data-linenumber="8">
|
|
@@ -363,13 +363,13 @@
|
|
|
363
363
|
<li class="never" data-hits="" data-linenumber="9">
|
|
364
364
|
|
|
365
365
|
|
|
366
|
-
<code class="ruby">
|
|
366
|
+
<code class="ruby"> # Name of the cookie which tracks first visitors</code>
|
|
367
367
|
</li>
|
|
368
368
|
|
|
369
369
|
<li class="covered" data-hits="1" data-linenumber="10">
|
|
370
370
|
<span class="hits">1</span>
|
|
371
371
|
|
|
372
|
-
<code class="ruby">
|
|
372
|
+
<code class="ruby"> attr_writer :first_visit_cookie_name</code>
|
|
373
373
|
</li>
|
|
374
374
|
|
|
375
375
|
<li class="never" data-hits="" data-linenumber="11">
|
|
@@ -381,13 +381,13 @@
|
|
|
381
381
|
<li class="never" data-hits="" data-linenumber="12">
|
|
382
382
|
|
|
383
383
|
|
|
384
|
-
<code class="ruby">
|
|
384
|
+
<code class="ruby"> # Name of the cookie which tracks current visits</code>
|
|
385
385
|
</li>
|
|
386
386
|
|
|
387
387
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
388
388
|
<span class="hits">1</span>
|
|
389
389
|
|
|
390
|
-
<code class="ruby">
|
|
390
|
+
<code class="ruby"> attr_writer :current_visit_cookie_name</code>
|
|
391
391
|
</li>
|
|
392
392
|
|
|
393
393
|
<li class="never" data-hits="" data-linenumber="14">
|
|
@@ -399,13 +399,13 @@
|
|
|
399
399
|
<li class="never" data-hits="" data-linenumber="15">
|
|
400
400
|
|
|
401
401
|
|
|
402
|
-
<code class="ruby">
|
|
402
|
+
<code class="ruby"> # Minutes the visit should timeout after (if no hit is received)</code>
|
|
403
403
|
</li>
|
|
404
404
|
|
|
405
405
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
406
406
|
<span class="hits">1</span>
|
|
407
407
|
|
|
408
|
-
<code class="ruby">
|
|
408
|
+
<code class="ruby"> attr_writer :visit_timeout</code>
|
|
409
409
|
</li>
|
|
410
410
|
|
|
411
411
|
<li class="never" data-hits="" data-linenumber="17">
|
|
@@ -417,13 +417,13 @@
|
|
|
417
417
|
<li class="never" data-hits="" data-linenumber="18">
|
|
418
418
|
|
|
419
419
|
|
|
420
|
-
<code class="ruby">
|
|
420
|
+
<code class="ruby"> # Endpoint for dashboard</code>
|
|
421
421
|
</li>
|
|
422
422
|
|
|
423
423
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
424
424
|
<span class="hits">1</span>
|
|
425
425
|
|
|
426
|
-
<code class="ruby">
|
|
426
|
+
<code class="ruby"> attr_writer :dashboard_endpoint</code>
|
|
427
427
|
</li>
|
|
428
428
|
|
|
429
429
|
<li class="never" data-hits="" data-linenumber="20">
|
|
@@ -435,13 +435,13 @@
|
|
|
435
435
|
<li class="never" data-hits="" data-linenumber="21">
|
|
436
436
|
|
|
437
437
|
|
|
438
|
-
<code class="ruby">
|
|
438
|
+
<code class="ruby"> # Endpoint for api</code>
|
|
439
439
|
</li>
|
|
440
440
|
|
|
441
441
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
442
442
|
<span class="hits">1</span>
|
|
443
443
|
|
|
444
|
-
<code class="ruby">
|
|
444
|
+
<code class="ruby"> attr_writer :api_endpoint</code>
|
|
445
445
|
</li>
|
|
446
446
|
|
|
447
447
|
<li class="never" data-hits="" data-linenumber="23">
|
|
@@ -453,7 +453,7 @@
|
|
|
453
453
|
<li class="covered" data-hits="1" data-linenumber="24">
|
|
454
454
|
<span class="hits">1</span>
|
|
455
455
|
|
|
456
|
-
<code class="ruby">
|
|
456
|
+
<code class="ruby"> attr_writer :path_filters</code>
|
|
457
457
|
</li>
|
|
458
458
|
|
|
459
459
|
<li class="never" data-hits="" data-linenumber="25">
|
|
@@ -465,7 +465,7 @@
|
|
|
465
465
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
466
466
|
<span class="hits">1</span>
|
|
467
467
|
|
|
468
|
-
<code class="ruby">
|
|
468
|
+
<code class="ruby"> attr_writer :filters</code>
|
|
469
469
|
</li>
|
|
470
470
|
|
|
471
471
|
<li class="never" data-hits="" data-linenumber="27">
|
|
@@ -477,13 +477,13 @@
|
|
|
477
477
|
<li class="never" data-hits="" data-linenumber="28">
|
|
478
478
|
|
|
479
479
|
|
|
480
|
-
<code class="ruby">
|
|
480
|
+
<code class="ruby"> # Path to the Geo IP Database file</code>
|
|
481
481
|
</li>
|
|
482
482
|
|
|
483
483
|
<li class="covered" data-hits="1" data-linenumber="29">
|
|
484
484
|
<span class="hits">1</span>
|
|
485
485
|
|
|
486
|
-
<code class="ruby">
|
|
486
|
+
<code class="ruby"> attr_writer :geo_ip_data_path</code>
|
|
487
487
|
</li>
|
|
488
488
|
|
|
489
489
|
<li class="never" data-hits="" data-linenumber="30">
|
|
@@ -495,25 +495,25 @@
|
|
|
495
495
|
<li class="never" data-hits="" data-linenumber="31">
|
|
496
496
|
|
|
497
497
|
|
|
498
|
-
<code class="ruby">
|
|
498
|
+
<code class="ruby"> # Redis namespace for keys</code>
|
|
499
499
|
</li>
|
|
500
500
|
|
|
501
501
|
<li class="covered" data-hits="1" data-linenumber="32">
|
|
502
502
|
<span class="hits">1</span>
|
|
503
503
|
|
|
504
|
-
<code class="ruby">
|
|
504
|
+
<code class="ruby"> def redis_namespace</code>
|
|
505
505
|
</li>
|
|
506
506
|
|
|
507
507
|
<li class="covered" data-hits="6" data-linenumber="33">
|
|
508
508
|
<span class="hits">6</span>
|
|
509
509
|
|
|
510
|
-
<code class="ruby">
|
|
510
|
+
<code class="ruby"> @redis_namespace ||= 'ra'</code>
|
|
511
511
|
</li>
|
|
512
512
|
|
|
513
513
|
<li class="never" data-hits="" data-linenumber="34">
|
|
514
514
|
|
|
515
515
|
|
|
516
|
-
<code class="ruby">
|
|
516
|
+
<code class="ruby"> end</code>
|
|
517
517
|
</li>
|
|
518
518
|
|
|
519
519
|
<li class="never" data-hits="" data-linenumber="35">
|
|
@@ -525,25 +525,25 @@
|
|
|
525
525
|
<li class="never" data-hits="" data-linenumber="36">
|
|
526
526
|
|
|
527
527
|
|
|
528
|
-
<code class="ruby">
|
|
528
|
+
<code class="ruby"> # Minutes the visit should timeout after (if no hit is received)</code>
|
|
529
529
|
</li>
|
|
530
530
|
|
|
531
531
|
<li class="covered" data-hits="1" data-linenumber="37">
|
|
532
532
|
<span class="hits">1</span>
|
|
533
533
|
|
|
534
|
-
<code class="ruby">
|
|
534
|
+
<code class="ruby"> def visit_timeout</code>
|
|
535
535
|
</li>
|
|
536
536
|
|
|
537
537
|
<li class="covered" data-hits="6" data-linenumber="38">
|
|
538
538
|
<span class="hits">6</span>
|
|
539
539
|
|
|
540
|
-
<code class="ruby">
|
|
540
|
+
<code class="ruby"> @visit_timeout ||= 30 # minutes</code>
|
|
541
541
|
</li>
|
|
542
542
|
|
|
543
543
|
<li class="never" data-hits="" data-linenumber="39">
|
|
544
544
|
|
|
545
545
|
|
|
546
|
-
<code class="ruby">
|
|
546
|
+
<code class="ruby"> end</code>
|
|
547
547
|
</li>
|
|
548
548
|
|
|
549
549
|
<li class="never" data-hits="" data-linenumber="40">
|
|
@@ -555,25 +555,25 @@
|
|
|
555
555
|
<li class="never" data-hits="" data-linenumber="41">
|
|
556
556
|
|
|
557
557
|
|
|
558
|
-
<code class="ruby">
|
|
558
|
+
<code class="ruby"> # Name of the cookie which tracks first visitors (unknown visitors)</code>
|
|
559
559
|
</li>
|
|
560
560
|
|
|
561
561
|
<li class="covered" data-hits="1" data-linenumber="42">
|
|
562
562
|
<span class="hits">1</span>
|
|
563
563
|
|
|
564
|
-
<code class="ruby">
|
|
564
|
+
<code class="ruby"> def first_visit_cookie_name</code>
|
|
565
565
|
</li>
|
|
566
566
|
|
|
567
567
|
<li class="covered" data-hits="22" data-linenumber="43">
|
|
568
568
|
<span class="hits">22</span>
|
|
569
569
|
|
|
570
|
-
<code class="ruby">
|
|
570
|
+
<code class="ruby"> @first_visit_cookie_name ||= '_rucn'</code>
|
|
571
571
|
</li>
|
|
572
572
|
|
|
573
573
|
<li class="never" data-hits="" data-linenumber="44">
|
|
574
574
|
|
|
575
575
|
|
|
576
|
-
<code class="ruby">
|
|
576
|
+
<code class="ruby"> end</code>
|
|
577
577
|
</li>
|
|
578
578
|
|
|
579
579
|
<li class="never" data-hits="" data-linenumber="45">
|
|
@@ -585,25 +585,25 @@
|
|
|
585
585
|
<li class="never" data-hits="" data-linenumber="46">
|
|
586
586
|
|
|
587
587
|
|
|
588
|
-
<code class="ruby">
|
|
588
|
+
<code class="ruby"> # Name of the cookie which tracks visits</code>
|
|
589
589
|
</li>
|
|
590
590
|
|
|
591
591
|
<li class="covered" data-hits="1" data-linenumber="47">
|
|
592
592
|
<span class="hits">1</span>
|
|
593
593
|
|
|
594
|
-
<code class="ruby">
|
|
594
|
+
<code class="ruby"> def current_visit_cookie_name</code>
|
|
595
595
|
</li>
|
|
596
596
|
|
|
597
597
|
<li class="covered" data-hits="29" data-linenumber="48">
|
|
598
598
|
<span class="hits">29</span>
|
|
599
599
|
|
|
600
|
-
<code class="ruby">
|
|
600
|
+
<code class="ruby"> @current_visit_cookie_name ||= '_vcn'</code>
|
|
601
601
|
</li>
|
|
602
602
|
|
|
603
603
|
<li class="never" data-hits="" data-linenumber="49">
|
|
604
604
|
|
|
605
605
|
|
|
606
|
-
<code class="ruby">
|
|
606
|
+
<code class="ruby"> end</code>
|
|
607
607
|
</li>
|
|
608
608
|
|
|
609
609
|
<li class="never" data-hits="" data-linenumber="50">
|
|
@@ -615,19 +615,19 @@
|
|
|
615
615
|
<li class="covered" data-hits="1" data-linenumber="51">
|
|
616
616
|
<span class="hits">1</span>
|
|
617
617
|
|
|
618
|
-
<code class="ruby">
|
|
618
|
+
<code class="ruby"> def filters</code>
|
|
619
619
|
</li>
|
|
620
620
|
|
|
621
621
|
<li class="covered" data-hits="6" data-linenumber="52">
|
|
622
622
|
<span class="hits">6</span>
|
|
623
623
|
|
|
624
|
-
<code class="ruby">
|
|
624
|
+
<code class="ruby"> @filters ||= []</code>
|
|
625
625
|
</li>
|
|
626
626
|
|
|
627
627
|
<li class="never" data-hits="" data-linenumber="53">
|
|
628
628
|
|
|
629
629
|
|
|
630
|
-
<code class="ruby">
|
|
630
|
+
<code class="ruby"> end</code>
|
|
631
631
|
</li>
|
|
632
632
|
|
|
633
633
|
<li class="never" data-hits="" data-linenumber="54">
|
|
@@ -639,19 +639,19 @@
|
|
|
639
639
|
<li class="covered" data-hits="1" data-linenumber="55">
|
|
640
640
|
<span class="hits">1</span>
|
|
641
641
|
|
|
642
|
-
<code class="ruby">
|
|
642
|
+
<code class="ruby"> def path_filters</code>
|
|
643
643
|
</li>
|
|
644
644
|
|
|
645
645
|
<li class="covered" data-hits="6" data-linenumber="56">
|
|
646
646
|
<span class="hits">6</span>
|
|
647
647
|
|
|
648
|
-
<code class="ruby">
|
|
648
|
+
<code class="ruby"> @path_filters ||= []</code>
|
|
649
649
|
</li>
|
|
650
650
|
|
|
651
651
|
<li class="never" data-hits="" data-linenumber="57">
|
|
652
652
|
|
|
653
653
|
|
|
654
|
-
<code class="ruby">
|
|
654
|
+
<code class="ruby"> end</code>
|
|
655
655
|
</li>
|
|
656
656
|
|
|
657
657
|
<li class="never" data-hits="" data-linenumber="58">
|
|
@@ -663,19 +663,19 @@
|
|
|
663
663
|
<li class="covered" data-hits="1" data-linenumber="59">
|
|
664
664
|
<span class="hits">1</span>
|
|
665
665
|
|
|
666
|
-
<code class="ruby">
|
|
666
|
+
<code class="ruby"> def add_filter(&proc)</code>
|
|
667
667
|
</li>
|
|
668
668
|
|
|
669
669
|
<li class="covered" data-hits="1" data-linenumber="60">
|
|
670
670
|
<span class="hits">1</span>
|
|
671
671
|
|
|
672
|
-
<code class="ruby">
|
|
672
|
+
<code class="ruby"> filters << RedisAnalytics::Filter.new(proc)</code>
|
|
673
673
|
</li>
|
|
674
674
|
|
|
675
675
|
<li class="never" data-hits="" data-linenumber="61">
|
|
676
676
|
|
|
677
677
|
|
|
678
|
-
<code class="ruby">
|
|
678
|
+
<code class="ruby"> end</code>
|
|
679
679
|
</li>
|
|
680
680
|
|
|
681
681
|
<li class="never" data-hits="" data-linenumber="62">
|
|
@@ -687,19 +687,19 @@
|
|
|
687
687
|
<li class="covered" data-hits="1" data-linenumber="63">
|
|
688
688
|
<span class="hits">1</span>
|
|
689
689
|
|
|
690
|
-
<code class="ruby">
|
|
690
|
+
<code class="ruby"> def add_path_filter(path)</code>
|
|
691
691
|
</li>
|
|
692
692
|
|
|
693
693
|
<li class="covered" data-hits="1" data-linenumber="64">
|
|
694
694
|
<span class="hits">1</span>
|
|
695
695
|
|
|
696
|
-
<code class="ruby">
|
|
696
|
+
<code class="ruby"> path_filters << RedisAnalytics::PathFilter.new(path)</code>
|
|
697
697
|
</li>
|
|
698
698
|
|
|
699
699
|
<li class="never" data-hits="" data-linenumber="65">
|
|
700
700
|
|
|
701
701
|
|
|
702
|
-
<code class="ruby">
|
|
702
|
+
<code class="ruby"> end</code>
|
|
703
703
|
</li>
|
|
704
704
|
|
|
705
705
|
<li class="never" data-hits="" data-linenumber="66">
|
|
@@ -711,19 +711,19 @@
|
|
|
711
711
|
<li class="covered" data-hits="1" data-linenumber="67">
|
|
712
712
|
<span class="hits">1</span>
|
|
713
713
|
|
|
714
|
-
<code class="ruby">
|
|
714
|
+
<code class="ruby"> def geo_ip_data_path</code>
|
|
715
715
|
</li>
|
|
716
716
|
|
|
717
717
|
<li class="covered" data-hits="3" data-linenumber="68">
|
|
718
718
|
<span class="hits">3</span>
|
|
719
719
|
|
|
720
|
-
<code class="ruby">
|
|
720
|
+
<code class="ruby"> @geo_ip_data_path = ::File.expand_path(::File.join(::File.dirname(__FILE__),'..','..')) + "/bin/GeoIP.dat"</code>
|
|
721
721
|
</li>
|
|
722
722
|
|
|
723
723
|
<li class="never" data-hits="" data-linenumber="69">
|
|
724
724
|
|
|
725
725
|
|
|
726
|
-
<code class="ruby">
|
|
726
|
+
<code class="ruby"> end</code>
|
|
727
727
|
</li>
|
|
728
728
|
|
|
729
729
|
<li class="never" data-hits="" data-linenumber="70">
|
|
@@ -735,19 +735,19 @@
|
|
|
735
735
|
<li class="covered" data-hits="1" data-linenumber="71">
|
|
736
736
|
<span class="hits">1</span>
|
|
737
737
|
|
|
738
|
-
<code class="ruby">
|
|
738
|
+
<code class="ruby"> def visitor_recency_slices</code>
|
|
739
739
|
</li>
|
|
740
740
|
|
|
741
741
|
<li class="covered" data-hits="2" data-linenumber="72">
|
|
742
742
|
<span class="hits">2</span>
|
|
743
743
|
|
|
744
|
-
<code class="ruby">
|
|
744
|
+
<code class="ruby"> @visitor_recency_slices ||= [1, 7, 30]</code>
|
|
745
745
|
</li>
|
|
746
746
|
|
|
747
747
|
<li class="never" data-hits="" data-linenumber="73">
|
|
748
748
|
|
|
749
749
|
|
|
750
|
-
<code class="ruby">
|
|
750
|
+
<code class="ruby"> end</code>
|
|
751
751
|
</li>
|
|
752
752
|
|
|
753
753
|
<li class="never" data-hits="" data-linenumber="74">
|
|
@@ -759,19 +759,19 @@
|
|
|
759
759
|
<li class="covered" data-hits="1" data-linenumber="75">
|
|
760
760
|
<span class="hits">1</span>
|
|
761
761
|
|
|
762
|
-
<code class="ruby">
|
|
762
|
+
<code class="ruby"> def default_range</code>
|
|
763
763
|
</li>
|
|
764
764
|
|
|
765
765
|
<li class="covered" data-hits="3" data-linenumber="76">
|
|
766
766
|
<span class="hits">3</span>
|
|
767
767
|
|
|
768
|
-
<code class="ruby">
|
|
768
|
+
<code class="ruby"> @default_range = :day</code>
|
|
769
769
|
</li>
|
|
770
770
|
|
|
771
771
|
<li class="never" data-hits="" data-linenumber="77">
|
|
772
772
|
|
|
773
773
|
|
|
774
|
-
<code class="ruby">
|
|
774
|
+
<code class="ruby"> end</code>
|
|
775
775
|
</li>
|
|
776
776
|
|
|
777
777
|
<li class="never" data-hits="" data-linenumber="78">
|
|
@@ -783,19 +783,19 @@
|
|
|
783
783
|
<li class="covered" data-hits="1" data-linenumber="79">
|
|
784
784
|
<span class="hits">1</span>
|
|
785
785
|
|
|
786
|
-
<code class="ruby">
|
|
786
|
+
<code class="ruby"> def redis_key_timestamps # [format, expire in seconds or nil]</code>
|
|
787
787
|
</li>
|
|
788
788
|
|
|
789
789
|
<li class="covered" data-hits="40" data-linenumber="80">
|
|
790
790
|
<span class="hits">40</span>
|
|
791
791
|
|
|
792
|
-
<code class="ruby">
|
|
792
|
+
<code class="ruby"> ['%Y', '%Y_%m', '%Y_%m_%d', '%Y_%m_%d_%H', '%Y_%m_%d_%H_%M']</code>
|
|
793
793
|
</li>
|
|
794
794
|
|
|
795
795
|
<li class="never" data-hits="" data-linenumber="81">
|
|
796
796
|
|
|
797
797
|
|
|
798
|
-
<code class="ruby">
|
|
798
|
+
<code class="ruby"> end</code>
|
|
799
799
|
</li>
|
|
800
800
|
|
|
801
801
|
<li class="never" data-hits="" data-linenumber="82">
|
|
@@ -807,19 +807,19 @@
|
|
|
807
807
|
<li class="covered" data-hits="1" data-linenumber="83">
|
|
808
808
|
<span class="hits">1</span>
|
|
809
809
|
|
|
810
|
-
<code class="ruby">
|
|
810
|
+
<code class="ruby"> def time_range_formats</code>
|
|
811
811
|
</li>
|
|
812
812
|
|
|
813
813
|
<li class="covered" data-hits="2" data-linenumber="84">
|
|
814
814
|
<span class="hits">2</span>
|
|
815
815
|
|
|
816
|
-
<code class="ruby">
|
|
816
|
+
<code class="ruby"> [[:year, :month, "%b"], [:week, :day, "%a"], [:day, :hour, "%l%P"]]</code>
|
|
817
817
|
</li>
|
|
818
818
|
|
|
819
819
|
<li class="never" data-hits="" data-linenumber="85">
|
|
820
820
|
|
|
821
821
|
|
|
822
|
-
<code class="ruby">
|
|
822
|
+
<code class="ruby"> end</code>
|
|
823
823
|
</li>
|
|
824
824
|
|
|
825
825
|
<li class="never" data-hits="" data-linenumber="86">
|
|
@@ -831,19 +831,19 @@
|
|
|
831
831
|
<li class="covered" data-hits="1" data-linenumber="87">
|
|
832
832
|
<span class="hits">1</span>
|
|
833
833
|
|
|
834
|
-
<code class="ruby">
|
|
834
|
+
<code class="ruby"> def configure</code>
|
|
835
835
|
</li>
|
|
836
836
|
|
|
837
837
|
<li class="covered" data-hits="6" data-linenumber="88">
|
|
838
838
|
<span class="hits">6</span>
|
|
839
839
|
|
|
840
|
-
<code class="ruby">
|
|
840
|
+
<code class="ruby"> yield self</code>
|
|
841
841
|
</li>
|
|
842
842
|
|
|
843
843
|
<li class="never" data-hits="" data-linenumber="89">
|
|
844
844
|
|
|
845
845
|
|
|
846
|
-
<code class="ruby">
|
|
846
|
+
<code class="ruby"> end</code>
|
|
847
847
|
</li>
|
|
848
848
|
|
|
849
849
|
<li class="never" data-hits="" data-linenumber="90">
|
|
@@ -855,19 +855,19 @@
|
|
|
855
855
|
<li class="covered" data-hits="1" data-linenumber="91">
|
|
856
856
|
<span class="hits">1</span>
|
|
857
857
|
|
|
858
|
-
<code class="ruby">
|
|
858
|
+
<code class="ruby"> def api_endpoint</code>
|
|
859
859
|
</li>
|
|
860
860
|
|
|
861
861
|
<li class="missed" data-hits="0" data-linenumber="92">
|
|
862
862
|
|
|
863
863
|
|
|
864
|
-
<code class="ruby">
|
|
864
|
+
<code class="ruby"> @api_endpoint || dashboard_endpoint + '/api'</code>
|
|
865
865
|
</li>
|
|
866
866
|
|
|
867
867
|
<li class="never" data-hits="" data-linenumber="93">
|
|
868
868
|
|
|
869
869
|
|
|
870
|
-
<code class="ruby">
|
|
870
|
+
<code class="ruby"> end</code>
|
|
871
871
|
</li>
|
|
872
872
|
|
|
873
873
|
<li class="never" data-hits="" data-linenumber="94">
|
|
@@ -879,19 +879,19 @@
|
|
|
879
879
|
<li class="covered" data-hits="1" data-linenumber="95">
|
|
880
880
|
<span class="hits">1</span>
|
|
881
881
|
|
|
882
|
-
<code class="ruby">
|
|
882
|
+
<code class="ruby"> def dashboard_endpoint</code>
|
|
883
883
|
</li>
|
|
884
884
|
|
|
885
885
|
<li class="missed" data-hits="0" data-linenumber="96">
|
|
886
886
|
|
|
887
887
|
|
|
888
|
-
<code class="ruby">
|
|
888
|
+
<code class="ruby"> @dashboard_endpoint || '/redis_analytics'</code>
|
|
889
889
|
</li>
|
|
890
890
|
|
|
891
891
|
<li class="never" data-hits="" data-linenumber="97">
|
|
892
892
|
|
|
893
893
|
|
|
894
|
-
<code class="ruby">
|
|
894
|
+
<code class="ruby"> end</code>
|
|
895
895
|
</li>
|
|
896
896
|
|
|
897
897
|
<li class="never" data-hits="" data-linenumber="98">
|
|
@@ -903,13 +903,13 @@
|
|
|
903
903
|
<li class="never" data-hits="" data-linenumber="99">
|
|
904
904
|
|
|
905
905
|
|
|
906
|
-
<code class="ruby">
|
|
906
|
+
<code class="ruby"> end</code>
|
|
907
907
|
</li>
|
|
908
908
|
|
|
909
909
|
<li class="never" data-hits="" data-linenumber="100">
|
|
910
910
|
|
|
911
911
|
|
|
912
|
-
<code class="ruby">
|
|
912
|
+
<code class="ruby">end</code>
|
|
913
913
|
</li>
|
|
914
914
|
|
|
915
915
|
<li class="never" data-hits="" data-linenumber="101">
|
|
@@ -925,11 +925,11 @@
|
|
|
925
925
|
<div class="source_table" id="092dae03526444499262440a90b632344ec5532e">
|
|
926
926
|
<div class="header">
|
|
927
927
|
<h3>lib/redis_analytics/engine.rb</h3>
|
|
928
|
-
<h4><span class="red">
|
|
928
|
+
<h4><span class="red">75.0 %</span> covered</h4>
|
|
929
929
|
<div>
|
|
930
|
-
<b>
|
|
931
|
-
<span class="green"><b>
|
|
932
|
-
<span class="red"><b>
|
|
930
|
+
<b>12</b> relevant lines.
|
|
931
|
+
<span class="green"><b>9</b> lines covered</span> and
|
|
932
|
+
<span class="red"><b>3</b> lines missed.</span>
|
|
933
933
|
</div>
|
|
934
934
|
</div>
|
|
935
935
|
|
|
@@ -969,76 +969,118 @@
|
|
|
969
969
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
970
970
|
<span class="hits">1</span>
|
|
971
971
|
|
|
972
|
-
<code class="ruby">
|
|
972
|
+
<code class="ruby"> class Engine < ::Rails::Engine</code>
|
|
973
973
|
</li>
|
|
974
974
|
|
|
975
975
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
976
976
|
<span class="hits">1</span>
|
|
977
977
|
|
|
978
|
-
<code class="ruby">
|
|
978
|
+
<code class="ruby"> isolate_namespace RedisAnalytics</code>
|
|
979
979
|
</li>
|
|
980
980
|
|
|
981
981
|
<li class="never" data-hits="" data-linenumber="8">
|
|
982
982
|
|
|
983
983
|
|
|
984
|
-
<code class="ruby">
|
|
984
|
+
<code class="ruby"> </code>
|
|
985
985
|
</li>
|
|
986
986
|
|
|
987
987
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
988
988
|
<span class="hits">1</span>
|
|
989
989
|
|
|
990
|
-
<code class="ruby">
|
|
990
|
+
<code class="ruby"> initializer "redis_analytics.middleware" do |app|</code>
|
|
991
991
|
</li>
|
|
992
992
|
|
|
993
993
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
994
994
|
|
|
995
995
|
|
|
996
|
-
<code class="ruby">
|
|
996
|
+
<code class="ruby"> app.config.app_middleware.use "RedisAnalytics::Tracker"</code>
|
|
997
997
|
</li>
|
|
998
998
|
|
|
999
999
|
<li class="never" data-hits="" data-linenumber="11">
|
|
1000
1000
|
|
|
1001
1001
|
|
|
1002
|
-
<code class="ruby">
|
|
1002
|
+
<code class="ruby"> end</code>
|
|
1003
1003
|
</li>
|
|
1004
1004
|
|
|
1005
1005
|
<li class="never" data-hits="" data-linenumber="12">
|
|
1006
1006
|
|
|
1007
1007
|
|
|
1008
|
-
<code class="ruby">
|
|
1008
|
+
<code class="ruby"> </code>
|
|
1009
1009
|
</li>
|
|
1010
1010
|
|
|
1011
1011
|
<li class="covered" data-hits="1" data-linenumber="13">
|
|
1012
1012
|
<span class="hits">1</span>
|
|
1013
1013
|
|
|
1014
|
-
<code class="ruby">
|
|
1014
|
+
<code class="ruby"> initializer "redis_analytics.view_helpers" do |app|</code>
|
|
1015
1015
|
</li>
|
|
1016
1016
|
|
|
1017
1017
|
<li class="missed" data-hits="0" data-linenumber="14">
|
|
1018
1018
|
|
|
1019
1019
|
|
|
1020
|
-
<code class="ruby">
|
|
1020
|
+
<code class="ruby"> ActionController::Base.send :include, RedisAnalytics::Helpers</code>
|
|
1021
1021
|
</li>
|
|
1022
1022
|
|
|
1023
1023
|
<li class="never" data-hits="" data-linenumber="15">
|
|
1024
1024
|
|
|
1025
1025
|
|
|
1026
|
-
<code class="ruby">
|
|
1026
|
+
<code class="ruby"> end</code>
|
|
1027
1027
|
</li>
|
|
1028
1028
|
|
|
1029
1029
|
<li class="never" data-hits="" data-linenumber="16">
|
|
1030
1030
|
|
|
1031
1031
|
|
|
1032
|
-
<code class="ruby">
|
|
1032
|
+
<code class="ruby"> </code>
|
|
1033
1033
|
</li>
|
|
1034
1034
|
|
|
1035
|
-
<li class="
|
|
1035
|
+
<li class="covered" data-hits="1" data-linenumber="17">
|
|
1036
|
+
<span class="hits">1</span>
|
|
1037
|
+
|
|
1038
|
+
<code class="ruby"> initializer "redis_analytics.precompile.hook", group: :all do |app|</code>
|
|
1039
|
+
</li>
|
|
1040
|
+
|
|
1041
|
+
<li class="missed" data-hits="0" data-linenumber="18">
|
|
1042
|
+
|
|
1043
|
+
|
|
1044
|
+
<code class="ruby"> app.config.assets.precompile += %w[</code>
|
|
1045
|
+
</li>
|
|
1046
|
+
|
|
1047
|
+
<li class="never" data-hits="" data-linenumber="19">
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
<code class="ruby"> redis_analytics/redis_analytics.js</code>
|
|
1051
|
+
</li>
|
|
1052
|
+
|
|
1053
|
+
<li class="never" data-hits="" data-linenumber="20">
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
<code class="ruby"> redis_analytics/redis_analytics.css</code>
|
|
1057
|
+
</li>
|
|
1058
|
+
|
|
1059
|
+
<li class="never" data-hits="" data-linenumber="21">
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
<code class="ruby"> ]</code>
|
|
1063
|
+
</li>
|
|
1064
|
+
|
|
1065
|
+
<li class="never" data-hits="" data-linenumber="22">
|
|
1066
|
+
|
|
1067
|
+
|
|
1068
|
+
<code class="ruby"> end</code>
|
|
1069
|
+
</li>
|
|
1070
|
+
|
|
1071
|
+
<li class="never" data-hits="" data-linenumber="23">
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
<code class="ruby"> end</code>
|
|
1075
|
+
</li>
|
|
1076
|
+
|
|
1077
|
+
<li class="never" data-hits="" data-linenumber="24">
|
|
1036
1078
|
|
|
1037
1079
|
|
|
1038
1080
|
<code class="ruby"> end</code>
|
|
1039
1081
|
</li>
|
|
1040
1082
|
|
|
1041
|
-
<li class="never" data-hits="" data-linenumber="
|
|
1083
|
+
<li class="never" data-hits="" data-linenumber="25">
|
|
1042
1084
|
|
|
1043
1085
|
|
|
1044
1086
|
<code class="ruby">end</code>
|
|
@@ -1065,19 +1107,19 @@
|
|
|
1065
1107
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
1066
1108
|
<span class="hits">1</span>
|
|
1067
1109
|
|
|
1068
|
-
<code class="ruby">
|
|
1110
|
+
<code class="ruby">module RedisAnalytics</code>
|
|
1069
1111
|
</li>
|
|
1070
1112
|
|
|
1071
1113
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
1072
1114
|
<span class="hits">1</span>
|
|
1073
1115
|
|
|
1074
|
-
<code class="ruby">
|
|
1116
|
+
<code class="ruby"> class Filter</code>
|
|
1075
1117
|
</li>
|
|
1076
1118
|
|
|
1077
1119
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
1078
1120
|
<span class="hits">1</span>
|
|
1079
1121
|
|
|
1080
|
-
<code class="ruby">
|
|
1122
|
+
<code class="ruby"> attr_reader :filter_proc</code>
|
|
1081
1123
|
</li>
|
|
1082
1124
|
|
|
1083
1125
|
<li class="never" data-hits="" data-linenumber="4">
|
|
@@ -1089,19 +1131,19 @@
|
|
|
1089
1131
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
1090
1132
|
<span class="hits">1</span>
|
|
1091
1133
|
|
|
1092
|
-
<code class="ruby">
|
|
1134
|
+
<code class="ruby"> def initialize(filter_proc)</code>
|
|
1093
1135
|
</li>
|
|
1094
1136
|
|
|
1095
1137
|
<li class="covered" data-hits="2" data-linenumber="6">
|
|
1096
1138
|
<span class="hits">2</span>
|
|
1097
1139
|
|
|
1098
|
-
<code class="ruby">
|
|
1140
|
+
<code class="ruby"> @filter_proc = filter_proc</code>
|
|
1099
1141
|
</li>
|
|
1100
1142
|
|
|
1101
1143
|
<li class="never" data-hits="" data-linenumber="7">
|
|
1102
1144
|
|
|
1103
1145
|
|
|
1104
|
-
<code class="ruby">
|
|
1146
|
+
<code class="ruby"> end</code>
|
|
1105
1147
|
</li>
|
|
1106
1148
|
|
|
1107
1149
|
<li class="never" data-hits="" data-linenumber="8">
|
|
@@ -1113,19 +1155,19 @@
|
|
|
1113
1155
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
1114
1156
|
<span class="hits">1</span>
|
|
1115
1157
|
|
|
1116
|
-
<code class="ruby">
|
|
1158
|
+
<code class="ruby"> def matches?(request, response)</code>
|
|
1117
1159
|
</li>
|
|
1118
1160
|
|
|
1119
1161
|
<li class="covered" data-hits="5" data-linenumber="10">
|
|
1120
1162
|
<span class="hits">5</span>
|
|
1121
1163
|
|
|
1122
|
-
<code class="ruby">
|
|
1164
|
+
<code class="ruby"> filter_proc.call(request, response)</code>
|
|
1123
1165
|
</li>
|
|
1124
1166
|
|
|
1125
1167
|
<li class="never" data-hits="" data-linenumber="11">
|
|
1126
1168
|
|
|
1127
1169
|
|
|
1128
|
-
<code class="ruby">
|
|
1170
|
+
<code class="ruby"> end</code>
|
|
1129
1171
|
</li>
|
|
1130
1172
|
|
|
1131
1173
|
<li class="never" data-hits="" data-linenumber="12">
|
|
@@ -1137,7 +1179,7 @@
|
|
|
1137
1179
|
<li class="never" data-hits="" data-linenumber="13">
|
|
1138
1180
|
|
|
1139
1181
|
|
|
1140
|
-
<code class="ruby">
|
|
1182
|
+
<code class="ruby"> end</code>
|
|
1141
1183
|
</li>
|
|
1142
1184
|
|
|
1143
1185
|
<li class="never" data-hits="" data-linenumber="14">
|
|
@@ -1149,13 +1191,13 @@
|
|
|
1149
1191
|
<li class="covered" data-hits="1" data-linenumber="15">
|
|
1150
1192
|
<span class="hits">1</span>
|
|
1151
1193
|
|
|
1152
|
-
<code class="ruby">
|
|
1194
|
+
<code class="ruby"> class PathFilter</code>
|
|
1153
1195
|
</li>
|
|
1154
1196
|
|
|
1155
1197
|
<li class="covered" data-hits="1" data-linenumber="16">
|
|
1156
1198
|
<span class="hits">1</span>
|
|
1157
1199
|
|
|
1158
|
-
<code class="ruby">
|
|
1200
|
+
<code class="ruby"> attr_reader :filter_path</code>
|
|
1159
1201
|
</li>
|
|
1160
1202
|
|
|
1161
1203
|
<li class="never" data-hits="" data-linenumber="17">
|
|
@@ -1167,19 +1209,19 @@
|
|
|
1167
1209
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
1168
1210
|
<span class="hits">1</span>
|
|
1169
1211
|
|
|
1170
|
-
<code class="ruby">
|
|
1212
|
+
<code class="ruby"> def initialize(filter_path)</code>
|
|
1171
1213
|
</li>
|
|
1172
1214
|
|
|
1173
1215
|
<li class="covered" data-hits="3" data-linenumber="19">
|
|
1174
1216
|
<span class="hits">3</span>
|
|
1175
1217
|
|
|
1176
|
-
<code class="ruby">
|
|
1218
|
+
<code class="ruby"> @filter_path = filter_path</code>
|
|
1177
1219
|
</li>
|
|
1178
1220
|
|
|
1179
1221
|
<li class="never" data-hits="" data-linenumber="20">
|
|
1180
1222
|
|
|
1181
1223
|
|
|
1182
|
-
<code class="ruby">
|
|
1224
|
+
<code class="ruby"> end</code>
|
|
1183
1225
|
</li>
|
|
1184
1226
|
|
|
1185
1227
|
<li class="never" data-hits="" data-linenumber="21">
|
|
@@ -1191,49 +1233,49 @@
|
|
|
1191
1233
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
1192
1234
|
<span class="hits">1</span>
|
|
1193
1235
|
|
|
1194
|
-
<code class="ruby">
|
|
1236
|
+
<code class="ruby"> def matches?(request_path)</code>
|
|
1195
1237
|
</li>
|
|
1196
1238
|
|
|
1197
1239
|
<li class="covered" data-hits="6" data-linenumber="23">
|
|
1198
1240
|
<span class="hits">6</span>
|
|
1199
1241
|
|
|
1200
|
-
<code class="ruby">
|
|
1242
|
+
<code class="ruby"> if filter_path.is_a?(String)</code>
|
|
1201
1243
|
</li>
|
|
1202
1244
|
|
|
1203
1245
|
<li class="covered" data-hits="5" data-linenumber="24">
|
|
1204
1246
|
<span class="hits">5</span>
|
|
1205
1247
|
|
|
1206
|
-
<code class="ruby">
|
|
1248
|
+
<code class="ruby"> request_path == filter_path</code>
|
|
1207
1249
|
</li>
|
|
1208
1250
|
|
|
1209
1251
|
<li class="covered" data-hits="1" data-linenumber="25">
|
|
1210
1252
|
<span class="hits">1</span>
|
|
1211
1253
|
|
|
1212
|
-
<code class="ruby">
|
|
1254
|
+
<code class="ruby"> elsif filter_path.is_a?(Regexp)</code>
|
|
1213
1255
|
</li>
|
|
1214
1256
|
|
|
1215
1257
|
<li class="covered" data-hits="1" data-linenumber="26">
|
|
1216
1258
|
<span class="hits">1</span>
|
|
1217
1259
|
|
|
1218
|
-
<code class="ruby">
|
|
1260
|
+
<code class="ruby"> request_path =~ filter_path</code>
|
|
1219
1261
|
</li>
|
|
1220
1262
|
|
|
1221
1263
|
<li class="never" data-hits="" data-linenumber="27">
|
|
1222
1264
|
|
|
1223
1265
|
|
|
1224
|
-
<code class="ruby">
|
|
1266
|
+
<code class="ruby"> end</code>
|
|
1225
1267
|
</li>
|
|
1226
1268
|
|
|
1227
1269
|
<li class="never" data-hits="" data-linenumber="28">
|
|
1228
1270
|
|
|
1229
1271
|
|
|
1230
|
-
<code class="ruby">
|
|
1272
|
+
<code class="ruby"> end</code>
|
|
1231
1273
|
</li>
|
|
1232
1274
|
|
|
1233
1275
|
<li class="never" data-hits="" data-linenumber="29">
|
|
1234
1276
|
|
|
1235
1277
|
|
|
1236
|
-
<code class="ruby">
|
|
1278
|
+
<code class="ruby"> end</code>
|
|
1237
1279
|
</li>
|
|
1238
1280
|
|
|
1239
1281
|
<li class="never" data-hits="" data-linenumber="30">
|
|
@@ -1245,7 +1287,7 @@
|
|
|
1245
1287
|
<li class="never" data-hits="" data-linenumber="31">
|
|
1246
1288
|
|
|
1247
1289
|
|
|
1248
|
-
<code class="ruby">
|
|
1290
|
+
<code class="ruby">end</code>
|
|
1249
1291
|
</li>
|
|
1250
1292
|
|
|
1251
1293
|
<li class="never" data-hits="" data-linenumber="32">
|
|
@@ -1275,13 +1317,13 @@
|
|
|
1275
1317
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
1276
1318
|
<span class="hits">1</span>
|
|
1277
1319
|
|
|
1278
|
-
<code class="ruby">
|
|
1320
|
+
<code class="ruby">module RedisAnalytics</code>
|
|
1279
1321
|
</li>
|
|
1280
1322
|
|
|
1281
1323
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
1282
1324
|
<span class="hits">1</span>
|
|
1283
1325
|
|
|
1284
|
-
<code class="ruby">
|
|
1326
|
+
<code class="ruby"> module Helpers</code>
|
|
1285
1327
|
</li>
|
|
1286
1328
|
|
|
1287
1329
|
<li class="never" data-hits="" data-linenumber="3">
|
|
@@ -1293,7 +1335,7 @@
|
|
|
1293
1335
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
1294
1336
|
<span class="hits">1</span>
|
|
1295
1337
|
|
|
1296
|
-
<code class="ruby">
|
|
1338
|
+
<code class="ruby"> FORMAT_SPECIFIER = [['%Y', 365], ['%m', 30], ['%d', 24], ['%H', 60], ['%M', 60]]</code>
|
|
1297
1339
|
</li>
|
|
1298
1340
|
|
|
1299
1341
|
<li class="never" data-hits="" data-linenumber="5">
|
|
@@ -1305,7 +1347,7 @@
|
|
|
1305
1347
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
1306
1348
|
<span class="hits">1</span>
|
|
1307
1349
|
|
|
1308
|
-
<code class="ruby">
|
|
1350
|
+
<code class="ruby"> GRANULARITY = ['yearly', 'monthly', 'dayly', 'hourly', 'minutely']</code>
|
|
1309
1351
|
</li>
|
|
1310
1352
|
|
|
1311
1353
|
<li class="never" data-hits="" data-linenumber="7">
|
|
@@ -1317,61 +1359,61 @@
|
|
|
1317
1359
|
<li class="covered" data-hits="1" data-linenumber="8">
|
|
1318
1360
|
<span class="hits">1</span>
|
|
1319
1361
|
|
|
1320
|
-
<code class="ruby">
|
|
1362
|
+
<code class="ruby"> private</code>
|
|
1321
1363
|
</li>
|
|
1322
1364
|
|
|
1323
1365
|
<li class="covered" data-hits="1" data-linenumber="9">
|
|
1324
1366
|
<span class="hits">1</span>
|
|
1325
1367
|
|
|
1326
|
-
<code class="ruby">
|
|
1368
|
+
<code class="ruby"> def method_missing(meth, *args, &block)</code>
|
|
1327
1369
|
</li>
|
|
1328
1370
|
|
|
1329
1371
|
<li class="missed" data-hits="0" data-linenumber="10">
|
|
1330
1372
|
|
|
1331
1373
|
|
|
1332
|
-
<code class="ruby">
|
|
1374
|
+
<code class="ruby"> if meth.to_s =~ /^(minute|hour|dai|day|month|year)ly_([a-z_0-9]+)$/</code>
|
|
1333
1375
|
</li>
|
|
1334
1376
|
|
|
1335
1377
|
<li class="missed" data-hits="0" data-linenumber="11">
|
|
1336
1378
|
|
|
1337
1379
|
|
|
1338
|
-
<code class="ruby">
|
|
1380
|
+
<code class="ruby"> granularity = ($1 == 'dai' ? 'day' : $1) + 'ly'</code>
|
|
1339
1381
|
</li>
|
|
1340
1382
|
|
|
1341
1383
|
<li class="missed" data-hits="0" data-linenumber="12">
|
|
1342
1384
|
|
|
1343
1385
|
|
|
1344
|
-
<code class="ruby">
|
|
1386
|
+
<code class="ruby"> metric_name = $2</code>
|
|
1345
1387
|
</li>
|
|
1346
1388
|
|
|
1347
1389
|
<li class="missed" data-hits="0" data-linenumber="13">
|
|
1348
1390
|
|
|
1349
1391
|
|
|
1350
|
-
<code class="ruby">
|
|
1392
|
+
<code class="ruby"> data(granularity, metric_name, *args)</code>
|
|
1351
1393
|
</li>
|
|
1352
1394
|
|
|
1353
1395
|
<li class="never" data-hits="" data-linenumber="14">
|
|
1354
1396
|
|
|
1355
1397
|
|
|
1356
|
-
<code class="ruby">
|
|
1398
|
+
<code class="ruby"> else</code>
|
|
1357
1399
|
</li>
|
|
1358
1400
|
|
|
1359
1401
|
<li class="missed" data-hits="0" data-linenumber="15">
|
|
1360
1402
|
|
|
1361
1403
|
|
|
1362
|
-
<code class="ruby">
|
|
1404
|
+
<code class="ruby"> super</code>
|
|
1363
1405
|
</li>
|
|
1364
1406
|
|
|
1365
1407
|
<li class="never" data-hits="" data-linenumber="16">
|
|
1366
1408
|
|
|
1367
1409
|
|
|
1368
|
-
<code class="ruby">
|
|
1410
|
+
<code class="ruby"> end</code>
|
|
1369
1411
|
</li>
|
|
1370
1412
|
|
|
1371
1413
|
<li class="never" data-hits="" data-linenumber="17">
|
|
1372
1414
|
|
|
1373
1415
|
|
|
1374
|
-
<code class="ruby">
|
|
1416
|
+
<code class="ruby"> end</code>
|
|
1375
1417
|
</li>
|
|
1376
1418
|
|
|
1377
1419
|
<li class="never" data-hits="" data-linenumber="18">
|
|
@@ -1383,19 +1425,19 @@
|
|
|
1383
1425
|
<li class="covered" data-hits="1" data-linenumber="19">
|
|
1384
1426
|
<span class="hits">1</span>
|
|
1385
1427
|
|
|
1386
|
-
<code class="ruby">
|
|
1428
|
+
<code class="ruby"> def metric_type(metric_name)</code>
|
|
1387
1429
|
</li>
|
|
1388
1430
|
|
|
1389
1431
|
<li class="missed" data-hits="0" data-linenumber="20">
|
|
1390
1432
|
|
|
1391
1433
|
|
|
1392
|
-
<code class="ruby">
|
|
1434
|
+
<code class="ruby"> RedisAnalytics.redis_connection.hget("#{RedisAnalytics.redis_namespace}:#METRICS", metric_name)</code>
|
|
1393
1435
|
</li>
|
|
1394
1436
|
|
|
1395
1437
|
<li class="never" data-hits="" data-linenumber="21">
|
|
1396
1438
|
|
|
1397
1439
|
|
|
1398
|
-
<code class="ruby">
|
|
1440
|
+
<code class="ruby"> end</code>
|
|
1399
1441
|
</li>
|
|
1400
1442
|
|
|
1401
1443
|
<li class="never" data-hits="" data-linenumber="22">
|
|
@@ -1407,19 +1449,19 @@
|
|
|
1407
1449
|
<li class="covered" data-hits="1" data-linenumber="23">
|
|
1408
1450
|
<span class="hits">1</span>
|
|
1409
1451
|
|
|
1410
|
-
<code class="ruby">
|
|
1452
|
+
<code class="ruby"> def data(granularity, metric_name, from_date, options = {})</code>
|
|
1411
1453
|
</li>
|
|
1412
1454
|
|
|
1413
1455
|
<li class="missed" data-hits="0" data-linenumber="24">
|
|
1414
1456
|
|
|
1415
1457
|
|
|
1416
|
-
<code class="ruby">
|
|
1458
|
+
<code class="ruby"> aggregate = options[:aggregate] || false</code>
|
|
1417
1459
|
</li>
|
|
1418
1460
|
|
|
1419
1461
|
<li class="missed" data-hits="0" data-linenumber="25">
|
|
1420
1462
|
|
|
1421
1463
|
|
|
1422
|
-
<code class="ruby">
|
|
1464
|
+
<code class="ruby"> x = granularity[0..-3]</code>
|
|
1423
1465
|
</li>
|
|
1424
1466
|
|
|
1425
1467
|
<li class="never" data-hits="" data-linenumber="26">
|
|
@@ -1431,13 +1473,13 @@
|
|
|
1431
1473
|
<li class="missed" data-hits="0" data-linenumber="27">
|
|
1432
1474
|
|
|
1433
1475
|
|
|
1434
|
-
<code class="ruby">
|
|
1476
|
+
<code class="ruby"> to_date = (options[:to_date] || Time.now).send("end_of_#{x}")</code>
|
|
1435
1477
|
</li>
|
|
1436
1478
|
|
|
1437
1479
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
1438
1480
|
|
|
1439
1481
|
|
|
1440
|
-
<code class="ruby">
|
|
1482
|
+
<code class="ruby"> i = from_date.send("beginning_of_#{x}")</code>
|
|
1441
1483
|
</li>
|
|
1442
1484
|
|
|
1443
1485
|
<li class="never" data-hits="" data-linenumber="29">
|
|
@@ -1449,205 +1491,205 @@
|
|
|
1449
1491
|
<li class="missed" data-hits="0" data-linenumber="30">
|
|
1450
1492
|
|
|
1451
1493
|
|
|
1452
|
-
<code class="ruby">
|
|
1494
|
+
<code class="ruby"> union = []</code>
|
|
1453
1495
|
</li>
|
|
1454
1496
|
|
|
1455
1497
|
<li class="missed" data-hits="0" data-linenumber="31">
|
|
1456
1498
|
|
|
1457
1499
|
|
|
1458
|
-
<code class="ruby">
|
|
1500
|
+
<code class="ruby"> time = []</code>
|
|
1459
1501
|
</li>
|
|
1460
1502
|
|
|
1461
1503
|
<li class="never" data-hits="" data-linenumber="32">
|
|
1462
1504
|
|
|
1463
1505
|
|
|
1464
|
-
<code class="ruby">
|
|
1506
|
+
<code class="ruby"> begin</code>
|
|
1465
1507
|
</li>
|
|
1466
1508
|
|
|
1467
1509
|
<li class="missed" data-hits="0" data-linenumber="33">
|
|
1468
1510
|
|
|
1469
1511
|
|
|
1470
|
-
<code class="ruby">
|
|
1512
|
+
<code class="ruby"> slice_key = i.strftime(FORMAT_SPECIFIER[0..GRANULARITY.index(granularity)].map{|x| x[0]}.join('_'))</code>
|
|
1471
1513
|
</li>
|
|
1472
1514
|
|
|
1473
1515
|
<li class="missed" data-hits="0" data-linenumber="34">
|
|
1474
1516
|
|
|
1475
1517
|
|
|
1476
|
-
<code class="ruby">
|
|
1518
|
+
<code class="ruby"> union << "#{RedisAnalytics.redis_namespace}:#{metric_name}:#{slice_key}"</code>
|
|
1477
1519
|
</li>
|
|
1478
1520
|
|
|
1479
1521
|
<li class="missed" data-hits="0" data-linenumber="35">
|
|
1480
1522
|
|
|
1481
1523
|
|
|
1482
|
-
<code class="ruby">
|
|
1524
|
+
<code class="ruby"> time << slice_key.split('_')</code>
|
|
1483
1525
|
</li>
|
|
1484
1526
|
|
|
1485
1527
|
<li class="missed" data-hits="0" data-linenumber="36">
|
|
1486
1528
|
|
|
1487
1529
|
|
|
1488
|
-
<code class="ruby">
|
|
1530
|
+
<code class="ruby"> i += 1.send(x)</code>
|
|
1489
1531
|
</li>
|
|
1490
1532
|
|
|
1491
1533
|
<li class="missed" data-hits="0" data-linenumber="37">
|
|
1492
1534
|
|
|
1493
1535
|
|
|
1494
|
-
<code class="ruby">
|
|
1536
|
+
<code class="ruby"> end while i <= to_date</code>
|
|
1495
1537
|
</li>
|
|
1496
1538
|
|
|
1497
1539
|
<li class="missed" data-hits="0" data-linenumber="38">
|
|
1498
1540
|
|
|
1499
1541
|
|
|
1500
|
-
<code class="ruby">
|
|
1542
|
+
<code class="ruby"> seq = get_next_seq</code>
|
|
1501
1543
|
</li>
|
|
1502
1544
|
|
|
1503
1545
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
1504
1546
|
|
|
1505
1547
|
|
|
1506
|
-
<code class="ruby">
|
|
1548
|
+
<code class="ruby"> if metric_type(metric_name) == 'String'</code>
|
|
1507
1549
|
</li>
|
|
1508
1550
|
|
|
1509
1551
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
1510
1552
|
|
|
1511
1553
|
|
|
1512
|
-
<code class="ruby">
|
|
1554
|
+
<code class="ruby"> if aggregate</code>
|
|
1513
1555
|
</li>
|
|
1514
1556
|
|
|
1515
1557
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
1516
1558
|
|
|
1517
1559
|
|
|
1518
|
-
<code class="ruby">
|
|
1560
|
+
<code class="ruby"> union_key = "#{RedisAnalytics.redis_namespace}:#{seq}"</code>
|
|
1519
1561
|
</li>
|
|
1520
1562
|
|
|
1521
1563
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
1522
1564
|
|
|
1523
1565
|
|
|
1524
|
-
<code class="ruby">
|
|
1566
|
+
<code class="ruby"> RedisAnalytics.redis_connection.zunionstore(union_key, union)</code>
|
|
1525
1567
|
</li>
|
|
1526
1568
|
|
|
1527
1569
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
1528
1570
|
|
|
1529
1571
|
|
|
1530
|
-
<code class="ruby">
|
|
1572
|
+
<code class="ruby"> RedisAnalytics.redis_connection.expire(union_key, 100)</code>
|
|
1531
1573
|
</li>
|
|
1532
1574
|
|
|
1533
1575
|
<li class="missed" data-hits="0" data-linenumber="44">
|
|
1534
1576
|
|
|
1535
1577
|
|
|
1536
|
-
<code class="ruby">
|
|
1578
|
+
<code class="ruby"> return Hash[RedisAnalytics.redis_connection.zrange(union_key, 0, -1, :with_scores => true)]</code>
|
|
1537
1579
|
</li>
|
|
1538
1580
|
|
|
1539
1581
|
<li class="never" data-hits="" data-linenumber="45">
|
|
1540
1582
|
|
|
1541
1583
|
|
|
1542
|
-
<code class="ruby">
|
|
1584
|
+
<code class="ruby"> else</code>
|
|
1543
1585
|
</li>
|
|
1544
1586
|
|
|
1545
1587
|
<li class="missed" data-hits="0" data-linenumber="46">
|
|
1546
1588
|
|
|
1547
1589
|
|
|
1548
|
-
<code class="ruby">
|
|
1590
|
+
<code class="ruby"> return time.zip(union.map{|x| Hash[RedisAnalytics.redis_connection.zrange(x, 0, -1, :with_scores => true)]})</code>
|
|
1549
1591
|
</li>
|
|
1550
1592
|
|
|
1551
1593
|
<li class="never" data-hits="" data-linenumber="47">
|
|
1552
1594
|
|
|
1553
1595
|
|
|
1554
|
-
<code class="ruby">
|
|
1596
|
+
<code class="ruby"> end</code>
|
|
1555
1597
|
</li>
|
|
1556
1598
|
|
|
1557
1599
|
<li class="missed" data-hits="0" data-linenumber="48">
|
|
1558
1600
|
|
|
1559
1601
|
|
|
1560
|
-
<code class="ruby">
|
|
1602
|
+
<code class="ruby"> elsif metric_type(metric_name) == 'Fixnum'</code>
|
|
1561
1603
|
</li>
|
|
1562
1604
|
|
|
1563
1605
|
<li class="missed" data-hits="0" data-linenumber="49">
|
|
1564
1606
|
|
|
1565
1607
|
|
|
1566
|
-
<code class="ruby">
|
|
1608
|
+
<code class="ruby"> if aggregate</code>
|
|
1567
1609
|
</li>
|
|
1568
1610
|
|
|
1569
1611
|
<li class="missed" data-hits="0" data-linenumber="50">
|
|
1570
1612
|
|
|
1571
1613
|
|
|
1572
|
-
<code class="ruby">
|
|
1614
|
+
<code class="ruby"> return RedisAnalytics.redis_connection.mget(*union).map(&:to_i).inject(:+)</code>
|
|
1573
1615
|
</li>
|
|
1574
1616
|
|
|
1575
1617
|
<li class="never" data-hits="" data-linenumber="51">
|
|
1576
1618
|
|
|
1577
1619
|
|
|
1578
|
-
<code class="ruby">
|
|
1620
|
+
<code class="ruby"> else</code>
|
|
1579
1621
|
</li>
|
|
1580
1622
|
|
|
1581
1623
|
<li class="missed" data-hits="0" data-linenumber="52">
|
|
1582
1624
|
|
|
1583
1625
|
|
|
1584
|
-
<code class="ruby">
|
|
1626
|
+
<code class="ruby"> return time.zip(RedisAnalytics.redis_connection.mget(*union).map(&:to_i))</code>
|
|
1585
1627
|
</li>
|
|
1586
1628
|
|
|
1587
1629
|
<li class="never" data-hits="" data-linenumber="53">
|
|
1588
1630
|
|
|
1589
1631
|
|
|
1590
|
-
<code class="ruby">
|
|
1632
|
+
<code class="ruby"> end</code>
|
|
1591
1633
|
</li>
|
|
1592
1634
|
|
|
1593
1635
|
<li class="never" data-hits="" data-linenumber="54">
|
|
1594
1636
|
|
|
1595
1637
|
|
|
1596
|
-
<code class="ruby">
|
|
1638
|
+
<code class="ruby"> else</code>
|
|
1597
1639
|
</li>
|
|
1598
1640
|
|
|
1599
1641
|
<li class="missed" data-hits="0" data-linenumber="55">
|
|
1600
1642
|
|
|
1601
1643
|
|
|
1602
|
-
<code class="ruby">
|
|
1644
|
+
<code class="ruby"> if Metrics.public_instance_methods.any?{|m| m.to_s =~ /^#{metric_name}_ratio_per_(hit|visit)$/}</code>
|
|
1603
1645
|
</li>
|
|
1604
1646
|
|
|
1605
1647
|
<li class="missed" data-hits="0" data-linenumber="56">
|
|
1606
1648
|
|
|
1607
1649
|
|
|
1608
|
-
<code class="ruby">
|
|
1650
|
+
<code class="ruby"> aggregate ? {} : time.zip([{}] * time.length)</code>
|
|
1609
1651
|
</li>
|
|
1610
1652
|
|
|
1611
1653
|
<li class="missed" data-hits="0" data-linenumber="57">
|
|
1612
1654
|
|
|
1613
1655
|
|
|
1614
|
-
<code class="ruby">
|
|
1656
|
+
<code class="ruby"> elsif Metrics.public_instance_methods.any?{|m| m.to_s =~ /^#{metric_name}_count_per_(hit|visit)$/}</code>
|
|
1615
1657
|
</li>
|
|
1616
1658
|
|
|
1617
1659
|
<li class="missed" data-hits="0" data-linenumber="58">
|
|
1618
1660
|
|
|
1619
1661
|
|
|
1620
|
-
<code class="ruby">
|
|
1662
|
+
<code class="ruby"> aggregate ? 0 : time.zip([0] * time.length)</code>
|
|
1621
1663
|
</li>
|
|
1622
1664
|
|
|
1623
1665
|
<li class="never" data-hits="" data-linenumber="59">
|
|
1624
1666
|
|
|
1625
1667
|
|
|
1626
|
-
<code class="ruby">
|
|
1668
|
+
<code class="ruby"> else</code>
|
|
1627
1669
|
</li>
|
|
1628
1670
|
|
|
1629
1671
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
1630
1672
|
|
|
1631
1673
|
|
|
1632
|
-
<code class="ruby">
|
|
1674
|
+
<code class="ruby"> aggregate ? 0 : time.zip([0] * time.length)</code>
|
|
1633
1675
|
</li>
|
|
1634
1676
|
|
|
1635
1677
|
<li class="never" data-hits="" data-linenumber="61">
|
|
1636
1678
|
|
|
1637
1679
|
|
|
1638
|
-
<code class="ruby">
|
|
1680
|
+
<code class="ruby"> end</code>
|
|
1639
1681
|
</li>
|
|
1640
1682
|
|
|
1641
1683
|
<li class="never" data-hits="" data-linenumber="62">
|
|
1642
1684
|
|
|
1643
1685
|
|
|
1644
|
-
<code class="ruby">
|
|
1686
|
+
<code class="ruby"> end</code>
|
|
1645
1687
|
</li>
|
|
1646
1688
|
|
|
1647
1689
|
<li class="never" data-hits="" data-linenumber="63">
|
|
1648
1690
|
|
|
1649
1691
|
|
|
1650
|
-
<code class="ruby">
|
|
1692
|
+
<code class="ruby"> end</code>
|
|
1651
1693
|
</li>
|
|
1652
1694
|
|
|
1653
1695
|
<li class="never" data-hits="" data-linenumber="64">
|
|
@@ -1659,19 +1701,19 @@
|
|
|
1659
1701
|
<li class="covered" data-hits="1" data-linenumber="65">
|
|
1660
1702
|
<span class="hits">1</span>
|
|
1661
1703
|
|
|
1662
|
-
<code class="ruby">
|
|
1704
|
+
<code class="ruby"> def get_next_seq</code>
|
|
1663
1705
|
</li>
|
|
1664
1706
|
|
|
1665
1707
|
<li class="missed" data-hits="0" data-linenumber="66">
|
|
1666
1708
|
|
|
1667
1709
|
|
|
1668
|
-
<code class="ruby">
|
|
1710
|
+
<code class="ruby"> seq = RedisAnalytics.redis_connection.incr("#{RedisAnalytics.redis_namespace}:#SEQUENCER")</code>
|
|
1669
1711
|
</li>
|
|
1670
1712
|
|
|
1671
1713
|
<li class="never" data-hits="" data-linenumber="67">
|
|
1672
1714
|
|
|
1673
1715
|
|
|
1674
|
-
<code class="ruby">
|
|
1716
|
+
<code class="ruby"> end</code>
|
|
1675
1717
|
</li>
|
|
1676
1718
|
|
|
1677
1719
|
<li class="never" data-hits="" data-linenumber="68">
|
|
@@ -1683,31 +1725,31 @@
|
|
|
1683
1725
|
<li class="covered" data-hits="1" data-linenumber="69">
|
|
1684
1726
|
<span class="hits">1</span>
|
|
1685
1727
|
|
|
1686
|
-
<code class="ruby">
|
|
1728
|
+
<code class="ruby"> def time_range</code>
|
|
1687
1729
|
</li>
|
|
1688
1730
|
|
|
1689
1731
|
<li class="missed" data-hits="0" data-linenumber="70">
|
|
1690
1732
|
|
|
1691
1733
|
|
|
1692
|
-
<code class="ruby">
|
|
1734
|
+
<code class="ruby"> (request.cookies["_rarng"] || RedisAnalytics.default_range).to_sym</code>
|
|
1693
1735
|
</li>
|
|
1694
1736
|
|
|
1695
1737
|
<li class="never" data-hits="" data-linenumber="71">
|
|
1696
1738
|
|
|
1697
1739
|
|
|
1698
|
-
<code class="ruby">
|
|
1740
|
+
<code class="ruby"> end</code>
|
|
1699
1741
|
</li>
|
|
1700
1742
|
|
|
1701
1743
|
<li class="never" data-hits="" data-linenumber="72">
|
|
1702
1744
|
|
|
1703
1745
|
|
|
1704
|
-
<code class="ruby">
|
|
1746
|
+
<code class="ruby"> end</code>
|
|
1705
1747
|
</li>
|
|
1706
1748
|
|
|
1707
1749
|
<li class="never" data-hits="" data-linenumber="73">
|
|
1708
1750
|
|
|
1709
1751
|
|
|
1710
|
-
<code class="ruby">
|
|
1752
|
+
<code class="ruby">end</code>
|
|
1711
1753
|
</li>
|
|
1712
1754
|
|
|
1713
1755
|
<li class="never" data-hits="" data-linenumber="74">
|
|
@@ -1737,13 +1779,13 @@
|
|
|
1737
1779
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
1738
1780
|
<span class="hits">1</span>
|
|
1739
1781
|
|
|
1740
|
-
<code class="ruby">
|
|
1782
|
+
<code class="ruby">module RedisAnalytics</code>
|
|
1741
1783
|
</li>
|
|
1742
1784
|
|
|
1743
1785
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
1744
1786
|
<span class="hits">1</span>
|
|
1745
1787
|
|
|
1746
|
-
<code class="ruby">
|
|
1788
|
+
<code class="ruby"> module Metrics</code>
|
|
1747
1789
|
</li>
|
|
1748
1790
|
|
|
1749
1791
|
<li class="never" data-hits="" data-linenumber="3">
|
|
@@ -1755,25 +1797,25 @@
|
|
|
1755
1797
|
<li class="covered" data-hits="1" data-linenumber="4">
|
|
1756
1798
|
<span class="hits">1</span>
|
|
1757
1799
|
|
|
1758
|
-
<code class="ruby">
|
|
1800
|
+
<code class="ruby"> attr_reader :visit_time_count_per_visit</code>
|
|
1759
1801
|
</li>
|
|
1760
1802
|
|
|
1761
1803
|
<li class="covered" data-hits="1" data-linenumber="5">
|
|
1762
1804
|
<span class="hits">1</span>
|
|
1763
1805
|
|
|
1764
|
-
<code class="ruby">
|
|
1806
|
+
<code class="ruby"> attr_reader :visits_count_per_visit, :first_visits_count_per_visit, :repeat_visits_count_per_visit</code>
|
|
1765
1807
|
</li>
|
|
1766
1808
|
|
|
1767
1809
|
<li class="covered" data-hits="1" data-linenumber="6">
|
|
1768
1810
|
<span class="hits">1</span>
|
|
1769
1811
|
|
|
1770
|
-
<code class="ruby">
|
|
1812
|
+
<code class="ruby"> attr_reader :unique_visits_ratio_per_visit</code>
|
|
1771
1813
|
</li>
|
|
1772
1814
|
|
|
1773
1815
|
<li class="covered" data-hits="1" data-linenumber="7">
|
|
1774
1816
|
<span class="hits">1</span>
|
|
1775
1817
|
|
|
1776
|
-
<code class="ruby">
|
|
1818
|
+
<code class="ruby"> attr_reader :page_views_count_per_hit, :second_page_views_count_per_hit</code>
|
|
1777
1819
|
</li>
|
|
1778
1820
|
|
|
1779
1821
|
<li class="never" data-hits="" data-linenumber="8">
|
|
@@ -1785,25 +1827,25 @@
|
|
|
1785
1827
|
<li class="never" data-hits="" data-linenumber="9">
|
|
1786
1828
|
|
|
1787
1829
|
|
|
1788
|
-
<code class="ruby">
|
|
1830
|
+
<code class="ruby"> # Developers can override or define new public methods here</code>
|
|
1789
1831
|
</li>
|
|
1790
1832
|
|
|
1791
1833
|
<li class="never" data-hits="" data-linenumber="10">
|
|
1792
1834
|
|
|
1793
1835
|
|
|
1794
|
-
<code class="ruby">
|
|
1836
|
+
<code class="ruby"> # Methods should start with track and end with count or types</code>
|
|
1795
1837
|
</li>
|
|
1796
1838
|
|
|
1797
1839
|
<li class="never" data-hits="" data-linenumber="11">
|
|
1798
1840
|
|
|
1799
1841
|
|
|
1800
|
-
<code class="ruby">
|
|
1842
|
+
<code class="ruby"> # Return types should be Fixnum or String resp.</code>
|
|
1801
1843
|
</li>
|
|
1802
1844
|
|
|
1803
1845
|
<li class="never" data-hits="" data-linenumber="12">
|
|
1804
1846
|
|
|
1805
1847
|
|
|
1806
|
-
<code class="ruby">
|
|
1848
|
+
<code class="ruby"> # If you return nil or an error nothing will be tracked</code>
|
|
1807
1849
|
</li>
|
|
1808
1850
|
|
|
1809
1851
|
<li class="never" data-hits="" data-linenumber="13">
|
|
@@ -1815,19 +1857,19 @@
|
|
|
1815
1857
|
<li class="covered" data-hits="1" data-linenumber="14">
|
|
1816
1858
|
<span class="hits">1</span>
|
|
1817
1859
|
|
|
1818
|
-
<code class="ruby">
|
|
1860
|
+
<code class="ruby"> def browser_ratio_per_visit</code>
|
|
1819
1861
|
</li>
|
|
1820
1862
|
|
|
1821
1863
|
<li class="covered" data-hits="3" data-linenumber="15">
|
|
1822
1864
|
<span class="hits">3</span>
|
|
1823
1865
|
|
|
1824
|
-
<code class="ruby">
|
|
1866
|
+
<code class="ruby"> user_agent.name.to_s</code>
|
|
1825
1867
|
</li>
|
|
1826
1868
|
|
|
1827
1869
|
<li class="never" data-hits="" data-linenumber="16">
|
|
1828
1870
|
|
|
1829
1871
|
|
|
1830
|
-
<code class="ruby">
|
|
1872
|
+
<code class="ruby"> end</code>
|
|
1831
1873
|
</li>
|
|
1832
1874
|
|
|
1833
1875
|
<li class="never" data-hits="" data-linenumber="17">
|
|
@@ -1839,19 +1881,19 @@
|
|
|
1839
1881
|
<li class="covered" data-hits="1" data-linenumber="18">
|
|
1840
1882
|
<span class="hits">1</span>
|
|
1841
1883
|
|
|
1842
|
-
<code class="ruby">
|
|
1884
|
+
<code class="ruby"> def platform_ratio_per_visit</code>
|
|
1843
1885
|
</li>
|
|
1844
1886
|
|
|
1845
1887
|
<li class="covered" data-hits="3" data-linenumber="19">
|
|
1846
1888
|
<span class="hits">3</span>
|
|
1847
1889
|
|
|
1848
|
-
<code class="ruby">
|
|
1890
|
+
<code class="ruby"> user_agent.platform.to_s</code>
|
|
1849
1891
|
</li>
|
|
1850
1892
|
|
|
1851
1893
|
<li class="never" data-hits="" data-linenumber="20">
|
|
1852
1894
|
|
|
1853
1895
|
|
|
1854
|
-
<code class="ruby">
|
|
1896
|
+
<code class="ruby"> end</code>
|
|
1855
1897
|
</li>
|
|
1856
1898
|
|
|
1857
1899
|
<li class="never" data-hits="" data-linenumber="21">
|
|
@@ -1863,79 +1905,79 @@
|
|
|
1863
1905
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
1864
1906
|
<span class="hits">1</span>
|
|
1865
1907
|
|
|
1866
|
-
<code class="ruby">
|
|
1908
|
+
<code class="ruby"> def country_ratio_per_visit</code>
|
|
1867
1909
|
</li>
|
|
1868
1910
|
|
|
1869
1911
|
<li class="covered" data-hits="3" data-linenumber="23">
|
|
1870
1912
|
<span class="hits">3</span>
|
|
1871
1913
|
|
|
1872
|
-
<code class="ruby">
|
|
1914
|
+
<code class="ruby"> if defined?(GeoIP)</code>
|
|
1873
1915
|
</li>
|
|
1874
1916
|
|
|
1875
1917
|
<li class="covered" data-hits="3" data-linenumber="24">
|
|
1876
1918
|
<span class="hits">3</span>
|
|
1877
1919
|
|
|
1878
|
-
<code class="ruby">
|
|
1920
|
+
<code class="ruby"> begin</code>
|
|
1879
1921
|
</li>
|
|
1880
1922
|
|
|
1881
1923
|
<li class="covered" data-hits="3" data-linenumber="25">
|
|
1882
1924
|
<span class="hits">3</span>
|
|
1883
1925
|
|
|
1884
|
-
<code class="ruby">
|
|
1926
|
+
<code class="ruby"> g = GeoIP.new(RedisAnalytics.geo_ip_data_path)</code>
|
|
1885
1927
|
</li>
|
|
1886
1928
|
|
|
1887
1929
|
<li class="covered" data-hits="3" data-linenumber="26">
|
|
1888
1930
|
<span class="hits">3</span>
|
|
1889
1931
|
|
|
1890
|
-
<code class="ruby">
|
|
1932
|
+
<code class="ruby"> geo_country_code = g.country(@rack_request.ip).to_hash[:country_code2]</code>
|
|
1891
1933
|
</li>
|
|
1892
1934
|
|
|
1893
1935
|
<li class="covered" data-hits="3" data-linenumber="27">
|
|
1894
1936
|
<span class="hits">3</span>
|
|
1895
1937
|
|
|
1896
|
-
<code class="ruby">
|
|
1938
|
+
<code class="ruby"> if geo_country_code and geo_country_code =~ /^[A-Z]{2}$/</code>
|
|
1897
1939
|
</li>
|
|
1898
1940
|
|
|
1899
1941
|
<li class="missed" data-hits="0" data-linenumber="28">
|
|
1900
1942
|
|
|
1901
1943
|
|
|
1902
|
-
<code class="ruby">
|
|
1944
|
+
<code class="ruby"> return geo_country_code</code>
|
|
1903
1945
|
</li>
|
|
1904
1946
|
|
|
1905
1947
|
<li class="never" data-hits="" data-linenumber="29">
|
|
1906
1948
|
|
|
1907
1949
|
|
|
1908
|
-
<code class="ruby">
|
|
1950
|
+
<code class="ruby"> end</code>
|
|
1909
1951
|
</li>
|
|
1910
1952
|
|
|
1911
1953
|
<li class="missed" data-hits="0" data-linenumber="30">
|
|
1912
1954
|
|
|
1913
1955
|
|
|
1914
|
-
<code class="ruby">
|
|
1956
|
+
<code class="ruby"> rescue Exception => e</code>
|
|
1915
1957
|
</li>
|
|
1916
1958
|
|
|
1917
1959
|
<li class="missed" data-hits="0" data-linenumber="31">
|
|
1918
1960
|
|
|
1919
1961
|
|
|
1920
|
-
<code class="ruby">
|
|
1962
|
+
<code class="ruby"> warn "Unable to fetch country info #{e}"</code>
|
|
1921
1963
|
</li>
|
|
1922
1964
|
|
|
1923
1965
|
<li class="never" data-hits="" data-linenumber="32">
|
|
1924
1966
|
|
|
1925
1967
|
|
|
1926
|
-
<code class="ruby">
|
|
1968
|
+
<code class="ruby"> end</code>
|
|
1927
1969
|
</li>
|
|
1928
1970
|
|
|
1929
1971
|
<li class="never" data-hits="" data-linenumber="33">
|
|
1930
1972
|
|
|
1931
1973
|
|
|
1932
|
-
<code class="ruby">
|
|
1974
|
+
<code class="ruby"> end</code>
|
|
1933
1975
|
</li>
|
|
1934
1976
|
|
|
1935
1977
|
<li class="never" data-hits="" data-linenumber="34">
|
|
1936
1978
|
|
|
1937
1979
|
|
|
1938
|
-
<code class="ruby">
|
|
1980
|
+
<code class="ruby"> end</code>
|
|
1939
1981
|
</li>
|
|
1940
1982
|
|
|
1941
1983
|
<li class="never" data-hits="" data-linenumber="35">
|
|
@@ -1947,91 +1989,91 @@
|
|
|
1947
1989
|
<li class="covered" data-hits="1" data-linenumber="36">
|
|
1948
1990
|
<span class="hits">1</span>
|
|
1949
1991
|
|
|
1950
|
-
<code class="ruby">
|
|
1992
|
+
<code class="ruby"> def recency_ratio_per_visit</code>
|
|
1951
1993
|
</li>
|
|
1952
1994
|
|
|
1953
1995
|
<li class="never" data-hits="" data-linenumber="37">
|
|
1954
1996
|
|
|
1955
1997
|
|
|
1956
|
-
<code class="ruby">
|
|
1998
|
+
<code class="ruby"> # tracking for visitor recency</code>
|
|
1957
1999
|
</li>
|
|
1958
2000
|
|
|
1959
2001
|
<li class="covered" data-hits="3" data-linenumber="38">
|
|
1960
2002
|
<span class="hits">3</span>
|
|
1961
2003
|
|
|
1962
|
-
<code class="ruby">
|
|
2004
|
+
<code class="ruby"> if @last_visit_time # from first_visit_cookie</code>
|
|
1963
2005
|
</li>
|
|
1964
2006
|
|
|
1965
2007
|
<li class="missed" data-hits="0" data-linenumber="39">
|
|
1966
2008
|
|
|
1967
2009
|
|
|
1968
|
-
<code class="ruby">
|
|
2010
|
+
<code class="ruby"> days_since_last_visit = ((@t.to_i - @last_visit_time.to_i)/(24*3600)).round</code>
|
|
1969
2011
|
</li>
|
|
1970
2012
|
|
|
1971
2013
|
<li class="missed" data-hits="0" data-linenumber="40">
|
|
1972
2014
|
|
|
1973
2015
|
|
|
1974
|
-
<code class="ruby">
|
|
2016
|
+
<code class="ruby"> if days_since_last_visit <= 1</code>
|
|
1975
2017
|
</li>
|
|
1976
2018
|
|
|
1977
2019
|
<li class="missed" data-hits="0" data-linenumber="41">
|
|
1978
2020
|
|
|
1979
2021
|
|
|
1980
|
-
<code class="ruby">
|
|
2022
|
+
<code class="ruby"> return 'd'</code>
|
|
1981
2023
|
</li>
|
|
1982
2024
|
|
|
1983
2025
|
<li class="missed" data-hits="0" data-linenumber="42">
|
|
1984
2026
|
|
|
1985
2027
|
|
|
1986
|
-
<code class="ruby">
|
|
2028
|
+
<code class="ruby"> elsif days_since_last_visit <= 7</code>
|
|
1987
2029
|
</li>
|
|
1988
2030
|
|
|
1989
2031
|
<li class="missed" data-hits="0" data-linenumber="43">
|
|
1990
2032
|
|
|
1991
2033
|
|
|
1992
|
-
<code class="ruby">
|
|
2034
|
+
<code class="ruby"> return 'w'</code>
|
|
1993
2035
|
</li>
|
|
1994
2036
|
|
|
1995
2037
|
<li class="missed" data-hits="0" data-linenumber="44">
|
|
1996
2038
|
|
|
1997
2039
|
|
|
1998
|
-
<code class="ruby">
|
|
2040
|
+
<code class="ruby"> elsif days_since_last_visit <= 30</code>
|
|
1999
2041
|
</li>
|
|
2000
2042
|
|
|
2001
2043
|
<li class="missed" data-hits="0" data-linenumber="45">
|
|
2002
2044
|
|
|
2003
2045
|
|
|
2004
|
-
<code class="ruby">
|
|
2046
|
+
<code class="ruby"> return 'm'</code>
|
|
2005
2047
|
</li>
|
|
2006
2048
|
|
|
2007
2049
|
<li class="never" data-hits="" data-linenumber="46">
|
|
2008
2050
|
|
|
2009
2051
|
|
|
2010
|
-
<code class="ruby">
|
|
2052
|
+
<code class="ruby"> else</code>
|
|
2011
2053
|
</li>
|
|
2012
2054
|
|
|
2013
2055
|
<li class="missed" data-hits="0" data-linenumber="47">
|
|
2014
2056
|
|
|
2015
2057
|
|
|
2016
|
-
<code class="ruby">
|
|
2058
|
+
<code class="ruby"> return 'o'</code>
|
|
2017
2059
|
</li>
|
|
2018
2060
|
|
|
2019
2061
|
<li class="never" data-hits="" data-linenumber="48">
|
|
2020
2062
|
|
|
2021
2063
|
|
|
2022
|
-
<code class="ruby">
|
|
2064
|
+
<code class="ruby"> end</code>
|
|
2023
2065
|
</li>
|
|
2024
2066
|
|
|
2025
2067
|
<li class="never" data-hits="" data-linenumber="49">
|
|
2026
2068
|
|
|
2027
2069
|
|
|
2028
|
-
<code class="ruby">
|
|
2070
|
+
<code class="ruby"> end</code>
|
|
2029
2071
|
</li>
|
|
2030
2072
|
|
|
2031
2073
|
<li class="never" data-hits="" data-linenumber="50">
|
|
2032
2074
|
|
|
2033
2075
|
|
|
2034
|
-
<code class="ruby">
|
|
2076
|
+
<code class="ruby"> end</code>
|
|
2035
2077
|
</li>
|
|
2036
2078
|
|
|
2037
2079
|
<li class="never" data-hits="" data-linenumber="51">
|
|
@@ -2043,19 +2085,19 @@
|
|
|
2043
2085
|
<li class="covered" data-hits="1" data-linenumber="52">
|
|
2044
2086
|
<span class="hits">1</span>
|
|
2045
2087
|
|
|
2046
|
-
<code class="ruby">
|
|
2088
|
+
<code class="ruby"> def device_ratio_per_visit</code>
|
|
2047
2089
|
</li>
|
|
2048
2090
|
|
|
2049
2091
|
<li class="covered" data-hits="3" data-linenumber="53">
|
|
2050
2092
|
<span class="hits">3</span>
|
|
2051
2093
|
|
|
2052
|
-
<code class="ruby">
|
|
2094
|
+
<code class="ruby"> return ((user_agent.mobile? or user_agent.tablet?) ? 'mobile' : 'desktop')</code>
|
|
2053
2095
|
</li>
|
|
2054
2096
|
|
|
2055
2097
|
<li class="never" data-hits="" data-linenumber="54">
|
|
2056
2098
|
|
|
2057
2099
|
|
|
2058
|
-
<code class="ruby">
|
|
2100
|
+
<code class="ruby"> end</code>
|
|
2059
2101
|
</li>
|
|
2060
2102
|
|
|
2061
2103
|
<li class="never" data-hits="" data-linenumber="55">
|
|
@@ -2067,97 +2109,97 @@
|
|
|
2067
2109
|
<li class="covered" data-hits="1" data-linenumber="56">
|
|
2068
2110
|
<span class="hits">1</span>
|
|
2069
2111
|
|
|
2070
|
-
<code class="ruby">
|
|
2112
|
+
<code class="ruby"> def referrer_ratio_per_visit</code>
|
|
2071
2113
|
</li>
|
|
2072
2114
|
|
|
2073
2115
|
<li class="covered" data-hits="3" data-linenumber="57">
|
|
2074
2116
|
<span class="hits">3</span>
|
|
2075
2117
|
|
|
2076
|
-
<code class="ruby">
|
|
2118
|
+
<code class="ruby"> if @rack_request.referrer</code>
|
|
2077
2119
|
</li>
|
|
2078
2120
|
|
|
2079
2121
|
<li class="missed" data-hits="0" data-linenumber="58">
|
|
2080
2122
|
|
|
2081
2123
|
|
|
2082
|
-
<code class="ruby">
|
|
2124
|
+
<code class="ruby"> ['google', 'bing', 'yahoo', 'cleartrip', 'github'].each do |referrer|</code>
|
|
2083
2125
|
</li>
|
|
2084
2126
|
|
|
2085
2127
|
<li class="never" data-hits="" data-linenumber="59">
|
|
2086
2128
|
|
|
2087
2129
|
|
|
2088
|
-
<code class="ruby">
|
|
2130
|
+
<code class="ruby"> # this will track x.google.mysite.com as google so its buggy, fix the regex</code>
|
|
2089
2131
|
</li>
|
|
2090
2132
|
|
|
2091
2133
|
<li class="missed" data-hits="0" data-linenumber="60">
|
|
2092
2134
|
|
|
2093
2135
|
|
|
2094
|
-
<code class="ruby">
|
|
2136
|
+
<code class="ruby"> if m = @rack_request.referrer.match(/^(https?:\/\/)?([a-zA-Z0-9\.\-]+\.)?(#{referrer})\.([a-zA-Z\.]+)(:[0-9]+)?(\/.*)?$/)</code>
|
|
2095
2137
|
</li>
|
|
2096
2138
|
|
|
2097
2139
|
<li class="missed" data-hits="0" data-linenumber="61">
|
|
2098
2140
|
|
|
2099
2141
|
|
|
2100
|
-
<code class="ruby">
|
|
2142
|
+
<code class="ruby"> "REFERRER => #{m.to_a[3]}"</code>
|
|
2101
2143
|
</li>
|
|
2102
2144
|
|
|
2103
2145
|
<li class="missed" data-hits="0" data-linenumber="62">
|
|
2104
2146
|
|
|
2105
2147
|
|
|
2106
|
-
<code class="ruby">
|
|
2148
|
+
<code class="ruby"> referrer = m.to_a[3]</code>
|
|
2107
2149
|
</li>
|
|
2108
2150
|
|
|
2109
2151
|
<li class="never" data-hits="" data-linenumber="63">
|
|
2110
2152
|
|
|
2111
2153
|
|
|
2112
|
-
<code class="ruby">
|
|
2154
|
+
<code class="ruby"> else</code>
|
|
2113
2155
|
</li>
|
|
2114
2156
|
|
|
2115
2157
|
<li class="missed" data-hits="0" data-linenumber="64">
|
|
2116
2158
|
|
|
2117
2159
|
|
|
2118
|
-
<code class="ruby">
|
|
2160
|
+
<code class="ruby"> referrer = 'other'</code>
|
|
2119
2161
|
</li>
|
|
2120
2162
|
|
|
2121
2163
|
<li class="never" data-hits="" data-linenumber="65">
|
|
2122
2164
|
|
|
2123
2165
|
|
|
2124
|
-
<code class="ruby">
|
|
2166
|
+
<code class="ruby"> end</code>
|
|
2125
2167
|
</li>
|
|
2126
2168
|
|
|
2127
2169
|
<li class="never" data-hits="" data-linenumber="66">
|
|
2128
2170
|
|
|
2129
2171
|
|
|
2130
|
-
<code class="ruby">
|
|
2172
|
+
<code class="ruby"> end</code>
|
|
2131
2173
|
</li>
|
|
2132
2174
|
|
|
2133
2175
|
<li class="never" data-hits="" data-linenumber="67">
|
|
2134
2176
|
|
|
2135
2177
|
|
|
2136
|
-
<code class="ruby">
|
|
2178
|
+
<code class="ruby"> else</code>
|
|
2137
2179
|
</li>
|
|
2138
2180
|
|
|
2139
2181
|
<li class="covered" data-hits="3" data-linenumber="68">
|
|
2140
2182
|
<span class="hits">3</span>
|
|
2141
2183
|
|
|
2142
|
-
<code class="ruby">
|
|
2184
|
+
<code class="ruby"> referrer = 'organic'</code>
|
|
2143
2185
|
</li>
|
|
2144
2186
|
|
|
2145
2187
|
<li class="never" data-hits="" data-linenumber="69">
|
|
2146
2188
|
|
|
2147
2189
|
|
|
2148
|
-
<code class="ruby">
|
|
2190
|
+
<code class="ruby"> end</code>
|
|
2149
2191
|
</li>
|
|
2150
2192
|
|
|
2151
2193
|
<li class="covered" data-hits="3" data-linenumber="70">
|
|
2152
2194
|
<span class="hits">3</span>
|
|
2153
2195
|
|
|
2154
|
-
<code class="ruby">
|
|
2196
|
+
<code class="ruby"> return referrer</code>
|
|
2155
2197
|
</li>
|
|
2156
2198
|
|
|
2157
2199
|
<li class="never" data-hits="" data-linenumber="71">
|
|
2158
2200
|
|
|
2159
2201
|
|
|
2160
|
-
<code class="ruby">
|
|
2202
|
+
<code class="ruby"> end</code>
|
|
2161
2203
|
</li>
|
|
2162
2204
|
|
|
2163
2205
|
<li class="never" data-hits="" data-linenumber="72">
|
|
@@ -2169,55 +2211,55 @@
|
|
|
2169
2211
|
<li class="never" data-hits="" data-linenumber="73">
|
|
2170
2212
|
|
|
2171
2213
|
|
|
2172
|
-
<code class="ruby">
|
|
2214
|
+
<code class="ruby"> # track the ratio of URL's visits</code>
|
|
2173
2215
|
</li>
|
|
2174
2216
|
|
|
2175
2217
|
<li class="covered" data-hits="1" data-linenumber="74">
|
|
2176
2218
|
<span class="hits">1</span>
|
|
2177
2219
|
|
|
2178
|
-
<code class="ruby">
|
|
2220
|
+
<code class="ruby"> def url_ratio_per_hit</code>
|
|
2179
2221
|
</li>
|
|
2180
2222
|
|
|
2181
2223
|
<li class="covered" data-hits="4" data-linenumber="75">
|
|
2182
2224
|
<span class="hits">4</span>
|
|
2183
2225
|
|
|
2184
|
-
<code class="ruby">
|
|
2226
|
+
<code class="ruby"> return @rack_request.path</code>
|
|
2185
2227
|
</li>
|
|
2186
2228
|
|
|
2187
2229
|
<li class="never" data-hits="" data-linenumber="76">
|
|
2188
2230
|
|
|
2189
2231
|
|
|
2190
|
-
<code class="ruby">
|
|
2232
|
+
<code class="ruby"> end</code>
|
|
2191
2233
|
</li>
|
|
2192
2234
|
|
|
2193
2235
|
<li class="never" data-hits="" data-linenumber="77">
|
|
2194
2236
|
|
|
2195
2237
|
|
|
2196
|
-
<code class="ruby">
|
|
2238
|
+
<code class="ruby"> </code>
|
|
2197
2239
|
</li>
|
|
2198
2240
|
|
|
2199
2241
|
<li class="never" data-hits="" data-linenumber="78">
|
|
2200
2242
|
|
|
2201
2243
|
|
|
2202
|
-
<code class="ruby">
|
|
2244
|
+
<code class="ruby"> # track the landing pages ratio</code>
|
|
2203
2245
|
</li>
|
|
2204
2246
|
|
|
2205
2247
|
<li class="covered" data-hits="1" data-linenumber="79">
|
|
2206
2248
|
<span class="hits">1</span>
|
|
2207
2249
|
|
|
2208
|
-
<code class="ruby">
|
|
2250
|
+
<code class="ruby"> def landing_page_ratio_per_hit</code>
|
|
2209
2251
|
</li>
|
|
2210
2252
|
|
|
2211
2253
|
<li class="covered" data-hits="4" data-linenumber="80">
|
|
2212
2254
|
<span class="hits">4</span>
|
|
2213
2255
|
|
|
2214
|
-
<code class="ruby">
|
|
2256
|
+
<code class="ruby"> return @rack_request.path if @page_view_seq_no.to_i == 0</code>
|
|
2215
2257
|
</li>
|
|
2216
2258
|
|
|
2217
2259
|
<li class="never" data-hits="" data-linenumber="81">
|
|
2218
2260
|
|
|
2219
2261
|
|
|
2220
|
-
<code class="ruby">
|
|
2262
|
+
<code class="ruby"> end</code>
|
|
2221
2263
|
</li>
|
|
2222
2264
|
|
|
2223
2265
|
<li class="never" data-hits="" data-linenumber="82">
|
|
@@ -2229,25 +2271,25 @@
|
|
|
2229
2271
|
<li class="never" data-hits="" data-linenumber="83">
|
|
2230
2272
|
|
|
2231
2273
|
|
|
2232
|
-
<code class="ruby">
|
|
2274
|
+
<code class="ruby"> # track the landing pages ratio</code>
|
|
2233
2275
|
</li>
|
|
2234
2276
|
|
|
2235
2277
|
<li class="covered" data-hits="1" data-linenumber="84">
|
|
2236
2278
|
<span class="hits">1</span>
|
|
2237
2279
|
|
|
2238
|
-
<code class="ruby">
|
|
2280
|
+
<code class="ruby"> def http_response_ratio_per_hit</code>
|
|
2239
2281
|
</li>
|
|
2240
2282
|
|
|
2241
2283
|
<li class="covered" data-hits="4" data-linenumber="85">
|
|
2242
2284
|
<span class="hits">4</span>
|
|
2243
2285
|
|
|
2244
|
-
<code class="ruby">
|
|
2286
|
+
<code class="ruby"> return @rack_response.status.to_s</code>
|
|
2245
2287
|
</li>
|
|
2246
2288
|
|
|
2247
2289
|
<li class="never" data-hits="" data-linenumber="86">
|
|
2248
2290
|
|
|
2249
2291
|
|
|
2250
|
-
<code class="ruby">
|
|
2292
|
+
<code class="ruby"> end</code>
|
|
2251
2293
|
</li>
|
|
2252
2294
|
|
|
2253
2295
|
<li class="never" data-hits="" data-linenumber="87">
|
|
@@ -2259,25 +2301,25 @@
|
|
|
2259
2301
|
<li class="covered" data-hits="1" data-linenumber="88">
|
|
2260
2302
|
<span class="hits">1</span>
|
|
2261
2303
|
|
|
2262
|
-
<code class="ruby">
|
|
2304
|
+
<code class="ruby"> private</code>
|
|
2263
2305
|
</li>
|
|
2264
2306
|
|
|
2265
2307
|
<li class="covered" data-hits="1" data-linenumber="89">
|
|
2266
2308
|
<span class="hits">1</span>
|
|
2267
2309
|
|
|
2268
|
-
<code class="ruby">
|
|
2310
|
+
<code class="ruby"> def user_agent</code>
|
|
2269
2311
|
</li>
|
|
2270
2312
|
|
|
2271
2313
|
<li class="covered" data-hits="12" data-linenumber="90">
|
|
2272
2314
|
<span class="hits">12</span>
|
|
2273
2315
|
|
|
2274
|
-
<code class="ruby">
|
|
2316
|
+
<code class="ruby"> Browser.new(:ua => @rack_request.user_agent, :accept_language => 'en-us')</code>
|
|
2275
2317
|
</li>
|
|
2276
2318
|
|
|
2277
2319
|
<li class="never" data-hits="" data-linenumber="91">
|
|
2278
2320
|
|
|
2279
2321
|
|
|
2280
|
-
<code class="ruby">
|
|
2322
|
+
<code class="ruby"> end</code>
|
|
2281
2323
|
</li>
|
|
2282
2324
|
|
|
2283
2325
|
<li class="never" data-hits="" data-linenumber="92">
|
|
@@ -2289,13 +2331,13 @@
|
|
|
2289
2331
|
<li class="never" data-hits="" data-linenumber="93">
|
|
2290
2332
|
|
|
2291
2333
|
|
|
2292
|
-
<code class="ruby">
|
|
2334
|
+
<code class="ruby"> end</code>
|
|
2293
2335
|
</li>
|
|
2294
2336
|
|
|
2295
2337
|
<li class="never" data-hits="" data-linenumber="94">
|
|
2296
2338
|
|
|
2297
2339
|
|
|
2298
|
-
<code class="ruby">
|
|
2340
|
+
<code class="ruby">end</code>
|
|
2299
2341
|
</li>
|
|
2300
2342
|
|
|
2301
2343
|
<li class="never" data-hits="" data-linenumber="95">
|
|
@@ -2709,19 +2751,19 @@
|
|
|
2709
2751
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
2710
2752
|
<span class="hits">1</span>
|
|
2711
2753
|
|
|
2712
|
-
<code class="ruby">
|
|
2754
|
+
<code class="ruby">module RedisAnalytics</code>
|
|
2713
2755
|
</li>
|
|
2714
2756
|
|
|
2715
2757
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
2716
2758
|
<span class="hits">1</span>
|
|
2717
2759
|
|
|
2718
|
-
<code class="ruby">
|
|
2760
|
+
<code class="ruby"> VERSION = '1.0.0'</code>
|
|
2719
2761
|
</li>
|
|
2720
2762
|
|
|
2721
2763
|
<li class="never" data-hits="" data-linenumber="3">
|
|
2722
2764
|
|
|
2723
2765
|
|
|
2724
|
-
<code class="ruby">
|
|
2766
|
+
<code class="ruby">end</code>
|
|
2725
2767
|
</li>
|
|
2726
2768
|
|
|
2727
2769
|
<li class="never" data-hits="" data-linenumber="4">
|
|
@@ -2751,19 +2793,19 @@
|
|
|
2751
2793
|
<li class="covered" data-hits="1" data-linenumber="1">
|
|
2752
2794
|
<span class="hits">1</span>
|
|
2753
2795
|
|
|
2754
|
-
<code class="ruby">
|
|
2796
|
+
<code class="ruby">module RedisAnalytics</code>
|
|
2755
2797
|
</li>
|
|
2756
2798
|
|
|
2757
2799
|
<li class="covered" data-hits="1" data-linenumber="2">
|
|
2758
2800
|
<span class="hits">1</span>
|
|
2759
2801
|
|
|
2760
|
-
<code class="ruby">
|
|
2802
|
+
<code class="ruby"> class Visit</code>
|
|
2761
2803
|
</li>
|
|
2762
2804
|
|
|
2763
2805
|
<li class="covered" data-hits="1" data-linenumber="3">
|
|
2764
2806
|
<span class="hits">1</span>
|
|
2765
2807
|
|
|
2766
|
-
<code class="ruby">
|
|
2808
|
+
<code class="ruby"> include Metrics</code>
|
|
2767
2809
|
</li>
|
|
2768
2810
|
|
|
2769
2811
|
<li class="never" data-hits="" data-linenumber="4">
|
|
@@ -2775,25 +2817,25 @@
|
|
|
2775
2817
|
<li class="never" data-hits="" data-linenumber="5">
|
|
2776
2818
|
|
|
2777
2819
|
|
|
2778
|
-
<code class="ruby">
|
|
2820
|
+
<code class="ruby"> # This class represents one unique visit</code>
|
|
2779
2821
|
</li>
|
|
2780
2822
|
|
|
2781
2823
|
<li class="never" data-hits="" data-linenumber="6">
|
|
2782
2824
|
|
|
2783
2825
|
|
|
2784
|
-
<code class="ruby">
|
|
2826
|
+
<code class="ruby"> # User may have never visited the site</code>
|
|
2785
2827
|
</li>
|
|
2786
2828
|
|
|
2787
2829
|
<li class="never" data-hits="" data-linenumber="7">
|
|
2788
2830
|
|
|
2789
2831
|
|
|
2790
|
-
<code class="ruby">
|
|
2832
|
+
<code class="ruby"> # User may have visited before but his visit is expired</code>
|
|
2791
2833
|
</li>
|
|
2792
2834
|
|
|
2793
2835
|
<li class="never" data-hits="" data-linenumber="8">
|
|
2794
2836
|
|
|
2795
2837
|
|
|
2796
|
-
<code class="ruby">
|
|
2838
|
+
<code class="ruby"> # Everything counted here is unique for a visit</code>
|
|
2797
2839
|
</li>
|
|
2798
2840
|
|
|
2799
2841
|
<li class="never" data-hits="" data-linenumber="9">
|
|
@@ -2805,37 +2847,37 @@
|
|
|
2805
2847
|
<li class="never" data-hits="" data-linenumber="10">
|
|
2806
2848
|
|
|
2807
2849
|
|
|
2808
|
-
<code class="ruby">
|
|
2850
|
+
<code class="ruby"> # helpers</code>
|
|
2809
2851
|
</li>
|
|
2810
2852
|
|
|
2811
2853
|
<li class="covered" data-hits="1" data-linenumber="11">
|
|
2812
2854
|
<span class="hits">1</span>
|
|
2813
2855
|
|
|
2814
|
-
<code class="ruby">
|
|
2856
|
+
<code class="ruby"> def for_each_time_range(t)</code>
|
|
2815
2857
|
</li>
|
|
2816
2858
|
|
|
2817
2859
|
<li class="covered" data-hits="228" data-linenumber="12">
|
|
2818
2860
|
<span class="hits">228</span>
|
|
2819
2861
|
|
|
2820
|
-
<code class="ruby">
|
|
2862
|
+
<code class="ruby"> RedisAnalytics.redis_key_timestamps.map{|x, y| t.strftime(x)}.each do |ts|</code>
|
|
2821
2863
|
</li>
|
|
2822
2864
|
|
|
2823
2865
|
<li class="covered" data-hits="190" data-linenumber="13">
|
|
2824
2866
|
<span class="hits">190</span>
|
|
2825
2867
|
|
|
2826
|
-
<code class="ruby">
|
|
2868
|
+
<code class="ruby"> yield(ts)</code>
|
|
2827
2869
|
</li>
|
|
2828
2870
|
|
|
2829
2871
|
<li class="never" data-hits="" data-linenumber="14">
|
|
2830
2872
|
|
|
2831
2873
|
|
|
2832
|
-
<code class="ruby">
|
|
2874
|
+
<code class="ruby"> end</code>
|
|
2833
2875
|
</li>
|
|
2834
2876
|
|
|
2835
2877
|
<li class="never" data-hits="" data-linenumber="15">
|
|
2836
2878
|
|
|
2837
2879
|
|
|
2838
|
-
<code class="ruby">
|
|
2880
|
+
<code class="ruby"> end</code>
|
|
2839
2881
|
</li>
|
|
2840
2882
|
|
|
2841
2883
|
<li class="never" data-hits="" data-linenumber="16">
|
|
@@ -2847,25 +2889,25 @@
|
|
|
2847
2889
|
<li class="covered" data-hits="1" data-linenumber="17">
|
|
2848
2890
|
<span class="hits">1</span>
|
|
2849
2891
|
|
|
2850
|
-
<code class="ruby">
|
|
2892
|
+
<code class="ruby"> def first_visit_info</code>
|
|
2851
2893
|
</li>
|
|
2852
2894
|
|
|
2853
2895
|
<li class="covered" data-hits="12" data-linenumber="18">
|
|
2854
2896
|
<span class="hits">12</span>
|
|
2855
2897
|
|
|
2856
|
-
<code class="ruby">
|
|
2898
|
+
<code class="ruby"> cookie = @rack_request.cookies[RedisAnalytics.first_visit_cookie_name]</code>
|
|
2857
2899
|
</li>
|
|
2858
2900
|
|
|
2859
2901
|
<li class="covered" data-hits="12" data-linenumber="19">
|
|
2860
2902
|
<span class="hits">12</span>
|
|
2861
2903
|
|
|
2862
|
-
<code class="ruby">
|
|
2904
|
+
<code class="ruby"> return cookie ? cookie.split('.') : []</code>
|
|
2863
2905
|
</li>
|
|
2864
2906
|
|
|
2865
2907
|
<li class="never" data-hits="" data-linenumber="20">
|
|
2866
2908
|
|
|
2867
2909
|
|
|
2868
|
-
<code class="ruby">
|
|
2910
|
+
<code class="ruby"> end</code>
|
|
2869
2911
|
</li>
|
|
2870
2912
|
|
|
2871
2913
|
<li class="never" data-hits="" data-linenumber="21">
|
|
@@ -2877,25 +2919,25 @@
|
|
|
2877
2919
|
<li class="covered" data-hits="1" data-linenumber="22">
|
|
2878
2920
|
<span class="hits">1</span>
|
|
2879
2921
|
|
|
2880
|
-
<code class="ruby">
|
|
2922
|
+
<code class="ruby"> def current_visit_info</code>
|
|
2881
2923
|
</li>
|
|
2882
2924
|
|
|
2883
2925
|
<li class="covered" data-hits="19" data-linenumber="23">
|
|
2884
2926
|
<span class="hits">19</span>
|
|
2885
2927
|
|
|
2886
|
-
<code class="ruby">
|
|
2928
|
+
<code class="ruby"> cookie = @rack_request.cookies[RedisAnalytics.current_visit_cookie_name]</code>
|
|
2887
2929
|
</li>
|
|
2888
2930
|
|
|
2889
2931
|
<li class="covered" data-hits="19" data-linenumber="24">
|
|
2890
2932
|
<span class="hits">19</span>
|
|
2891
2933
|
|
|
2892
|
-
<code class="ruby">
|
|
2934
|
+
<code class="ruby"> return cookie ? cookie.split('.') : []</code>
|
|
2893
2935
|
</li>
|
|
2894
2936
|
|
|
2895
2937
|
<li class="never" data-hits="" data-linenumber="25">
|
|
2896
2938
|
|
|
2897
2939
|
|
|
2898
|
-
<code class="ruby">
|
|
2940
|
+
<code class="ruby"> end</code>
|
|
2899
2941
|
</li>
|
|
2900
2942
|
|
|
2901
2943
|
<li class="never" data-hits="" data-linenumber="26">
|
|
@@ -2907,49 +2949,49 @@
|
|
|
2907
2949
|
<li class="never" data-hits="" data-linenumber="27">
|
|
2908
2950
|
|
|
2909
2951
|
|
|
2910
|
-
<code class="ruby">
|
|
2952
|
+
<code class="ruby"> # method used in analytics.rb to initialize visit</code>
|
|
2911
2953
|
</li>
|
|
2912
2954
|
|
|
2913
2955
|
<li class="covered" data-hits="1" data-linenumber="28">
|
|
2914
2956
|
<span class="hits">1</span>
|
|
2915
2957
|
|
|
2916
|
-
<code class="ruby">
|
|
2958
|
+
<code class="ruby"> def initialize(request, response)</code>
|
|
2917
2959
|
</li>
|
|
2918
2960
|
|
|
2919
2961
|
<li class="covered" data-hits="4" data-linenumber="29">
|
|
2920
2962
|
<span class="hits">4</span>
|
|
2921
2963
|
|
|
2922
|
-
<code class="ruby">
|
|
2964
|
+
<code class="ruby"> @t = Time.now</code>
|
|
2923
2965
|
</li>
|
|
2924
2966
|
|
|
2925
2967
|
<li class="covered" data-hits="4" data-linenumber="30">
|
|
2926
2968
|
<span class="hits">4</span>
|
|
2927
2969
|
|
|
2928
|
-
<code class="ruby">
|
|
2970
|
+
<code class="ruby"> @redis_key_prefix = "#{RedisAnalytics.redis_namespace}:"</code>
|
|
2929
2971
|
</li>
|
|
2930
2972
|
|
|
2931
2973
|
<li class="covered" data-hits="4" data-linenumber="31">
|
|
2932
2974
|
<span class="hits">4</span>
|
|
2933
2975
|
|
|
2934
|
-
<code class="ruby">
|
|
2976
|
+
<code class="ruby"> @rack_request = request</code>
|
|
2935
2977
|
</li>
|
|
2936
2978
|
|
|
2937
2979
|
<li class="covered" data-hits="4" data-linenumber="32">
|
|
2938
2980
|
<span class="hits">4</span>
|
|
2939
2981
|
|
|
2940
|
-
<code class="ruby">
|
|
2982
|
+
<code class="ruby"> @rack_response = response</code>
|
|
2941
2983
|
</li>
|
|
2942
2984
|
|
|
2943
2985
|
<li class="covered" data-hits="4" data-linenumber="33">
|
|
2944
2986
|
<span class="hits">4</span>
|
|
2945
2987
|
|
|
2946
|
-
<code class="ruby">
|
|
2988
|
+
<code class="ruby"> @first_visit_seq = first_visit_info[0] || current_visit_info[0]</code>
|
|
2947
2989
|
</li>
|
|
2948
2990
|
|
|
2949
2991
|
<li class="covered" data-hits="4" data-linenumber="34">
|
|
2950
2992
|
<span class="hits">4</span>
|
|
2951
2993
|
|
|
2952
|
-
<code class="ruby">
|
|
2994
|
+
<code class="ruby"> @current_visit_seq = current_visit_info[1]</code>
|
|
2953
2995
|
</li>
|
|
2954
2996
|
|
|
2955
2997
|
<li class="never" data-hits="" data-linenumber="35">
|
|
@@ -2961,13 +3003,13 @@
|
|
|
2961
3003
|
<li class="covered" data-hits="4" data-linenumber="36">
|
|
2962
3004
|
<span class="hits">4</span>
|
|
2963
3005
|
|
|
2964
|
-
<code class="ruby">
|
|
3006
|
+
<code class="ruby"> @first_visit_time = first_visit_info[1]</code>
|
|
2965
3007
|
</li>
|
|
2966
3008
|
|
|
2967
3009
|
<li class="covered" data-hits="4" data-linenumber="37">
|
|
2968
3010
|
<span class="hits">4</span>
|
|
2969
3011
|
|
|
2970
|
-
<code class="ruby">
|
|
3012
|
+
<code class="ruby"> @last_visit_time = first_visit_info[2]</code>
|
|
2971
3013
|
</li>
|
|
2972
3014
|
|
|
2973
3015
|
<li class="never" data-hits="" data-linenumber="38">
|
|
@@ -2979,25 +3021,25 @@
|
|
|
2979
3021
|
<li class="covered" data-hits="4" data-linenumber="39">
|
|
2980
3022
|
<span class="hits">4</span>
|
|
2981
3023
|
|
|
2982
|
-
<code class="ruby">
|
|
3024
|
+
<code class="ruby"> @page_view_seq_no = current_visit_info[2] || 0</code>
|
|
2983
3025
|
</li>
|
|
2984
3026
|
|
|
2985
3027
|
<li class="covered" data-hits="4" data-linenumber="40">
|
|
2986
3028
|
<span class="hits">4</span>
|
|
2987
3029
|
|
|
2988
|
-
<code class="ruby">
|
|
3030
|
+
<code class="ruby"> @last_visit_start_time = current_visit_info[3]</code>
|
|
2989
3031
|
</li>
|
|
2990
3032
|
|
|
2991
3033
|
<li class="covered" data-hits="4" data-linenumber="41">
|
|
2992
3034
|
<span class="hits">4</span>
|
|
2993
3035
|
|
|
2994
|
-
<code class="ruby">
|
|
3036
|
+
<code class="ruby"> @last_visit_end_time = current_visit_info[4]</code>
|
|
2995
3037
|
</li>
|
|
2996
3038
|
|
|
2997
3039
|
<li class="never" data-hits="" data-linenumber="42">
|
|
2998
3040
|
|
|
2999
3041
|
|
|
3000
|
-
<code class="ruby">
|
|
3042
|
+
<code class="ruby"> end</code>
|
|
3001
3043
|
</li>
|
|
3002
3044
|
|
|
3003
3045
|
<li class="never" data-hits="" data-linenumber="43">
|
|
@@ -3009,127 +3051,127 @@
|
|
|
3009
3051
|
<li class="never" data-hits="" data-linenumber="44">
|
|
3010
3052
|
|
|
3011
3053
|
|
|
3012
|
-
<code class="ruby">
|
|
3054
|
+
<code class="ruby"> # called from analytics.rb</code>
|
|
3013
3055
|
</li>
|
|
3014
3056
|
|
|
3015
3057
|
<li class="covered" data-hits="1" data-linenumber="45">
|
|
3016
3058
|
<span class="hits">1</span>
|
|
3017
3059
|
|
|
3018
|
-
<code class="ruby">
|
|
3060
|
+
<code class="ruby"> def record</code>
|
|
3019
3061
|
</li>
|
|
3020
3062
|
|
|
3021
3063
|
<li class="covered" data-hits="4" data-linenumber="46">
|
|
3022
3064
|
<span class="hits">4</span>
|
|
3023
3065
|
|
|
3024
|
-
<code class="ruby">
|
|
3066
|
+
<code class="ruby"> if @current_visit_seq</code>
|
|
3025
3067
|
</li>
|
|
3026
3068
|
|
|
3027
3069
|
<li class="covered" data-hits="1" data-linenumber="47">
|
|
3028
3070
|
<span class="hits">1</span>
|
|
3029
3071
|
|
|
3030
|
-
<code class="ruby">
|
|
3072
|
+
<code class="ruby"> track("visit_time", @t.to_i - @last_visit_end_time.to_i)</code>
|
|
3031
3073
|
</li>
|
|
3032
3074
|
|
|
3033
3075
|
<li class="never" data-hits="" data-linenumber="48">
|
|
3034
3076
|
|
|
3035
3077
|
|
|
3036
|
-
<code class="ruby">
|
|
3078
|
+
<code class="ruby"> else</code>
|
|
3037
3079
|
</li>
|
|
3038
3080
|
|
|
3039
3081
|
<li class="covered" data-hits="3" data-linenumber="49">
|
|
3040
3082
|
<span class="hits">3</span>
|
|
3041
3083
|
|
|
3042
|
-
<code class="ruby">
|
|
3084
|
+
<code class="ruby"> @current_visit_seq ||= counter("visits")</code>
|
|
3043
3085
|
</li>
|
|
3044
3086
|
|
|
3045
3087
|
<li class="covered" data-hits="3" data-linenumber="50">
|
|
3046
3088
|
<span class="hits">3</span>
|
|
3047
3089
|
|
|
3048
|
-
<code class="ruby">
|
|
3090
|
+
<code class="ruby"> track("visits", 1) # track core 'visit' metric</code>
|
|
3049
3091
|
</li>
|
|
3050
3092
|
|
|
3051
3093
|
<li class="covered" data-hits="3" data-linenumber="51">
|
|
3052
3094
|
<span class="hits">3</span>
|
|
3053
3095
|
|
|
3054
|
-
<code class="ruby">
|
|
3096
|
+
<code class="ruby"> if @first_visit_seq</code>
|
|
3055
3097
|
</li>
|
|
3056
3098
|
|
|
3057
3099
|
<li class="missed" data-hits="0" data-linenumber="52">
|
|
3058
3100
|
|
|
3059
3101
|
|
|
3060
|
-
<code class="ruby">
|
|
3102
|
+
<code class="ruby"> track("repeat_visits", 1)</code>
|
|
3061
3103
|
</li>
|
|
3062
3104
|
|
|
3063
3105
|
<li class="never" data-hits="" data-linenumber="53">
|
|
3064
3106
|
|
|
3065
3107
|
|
|
3066
|
-
<code class="ruby">
|
|
3108
|
+
<code class="ruby"> else</code>
|
|
3067
3109
|
</li>
|
|
3068
3110
|
|
|
3069
3111
|
<li class="covered" data-hits="3" data-linenumber="54">
|
|
3070
3112
|
<span class="hits">3</span>
|
|
3071
3113
|
|
|
3072
|
-
<code class="ruby">
|
|
3114
|
+
<code class="ruby"> @first_visit_seq ||= counter("unique_visits")</code>
|
|
3073
3115
|
</li>
|
|
3074
3116
|
|
|
3075
3117
|
<li class="covered" data-hits="3" data-linenumber="55">
|
|
3076
3118
|
<span class="hits">3</span>
|
|
3077
3119
|
|
|
3078
|
-
<code class="ruby">
|
|
3120
|
+
<code class="ruby"> track("first_visits", 1)</code>
|
|
3079
3121
|
</li>
|
|
3080
3122
|
|
|
3081
3123
|
<li class="covered" data-hits="3" data-linenumber="56">
|
|
3082
3124
|
<span class="hits">3</span>
|
|
3083
3125
|
|
|
3084
|
-
<code class="ruby">
|
|
3126
|
+
<code class="ruby"> track("unique_visits", 1)</code>
|
|
3085
3127
|
</li>
|
|
3086
3128
|
|
|
3087
3129
|
<li class="never" data-hits="" data-linenumber="57">
|
|
3088
3130
|
|
|
3089
3131
|
|
|
3090
|
-
<code class="ruby">
|
|
3132
|
+
<code class="ruby"> end</code>
|
|
3091
3133
|
</li>
|
|
3092
3134
|
|
|
3093
3135
|
<li class="covered" data-hits="3" data-linenumber="58">
|
|
3094
3136
|
<span class="hits">3</span>
|
|
3095
3137
|
|
|
3096
|
-
<code class="ruby">
|
|
3138
|
+
<code class="ruby"> exec_custom_methods('visit') # custom methods that are measured on a per-visit basis</code>
|
|
3097
3139
|
</li>
|
|
3098
3140
|
|
|
3099
3141
|
<li class="never" data-hits="" data-linenumber="59">
|
|
3100
3142
|
|
|
3101
3143
|
|
|
3102
|
-
<code class="ruby">
|
|
3144
|
+
<code class="ruby"> end</code>
|
|
3103
3145
|
</li>
|
|
3104
3146
|
|
|
3105
3147
|
<li class="covered" data-hits="4" data-linenumber="60">
|
|
3106
3148
|
<span class="hits">4</span>
|
|
3107
3149
|
|
|
3108
|
-
<code class="ruby">
|
|
3150
|
+
<code class="ruby"> exec_custom_methods('hit') # custom methods that are measured on a per-page-view (per-hit) basis</code>
|
|
3109
3151
|
</li>
|
|
3110
3152
|
|
|
3111
3153
|
<li class="covered" data-hits="4" data-linenumber="61">
|
|
3112
3154
|
<span class="hits">4</span>
|
|
3113
3155
|
|
|
3114
|
-
<code class="ruby">
|
|
3156
|
+
<code class="ruby"> track("page_views", 1) # track core 'page_view' metric</code>
|
|
3115
3157
|
</li>
|
|
3116
3158
|
|
|
3117
3159
|
<li class="covered" data-hits="4" data-linenumber="62">
|
|
3118
3160
|
<span class="hits">4</span>
|
|
3119
3161
|
|
|
3120
|
-
<code class="ruby">
|
|
3162
|
+
<code class="ruby"> track("second_page_views", 1) if @page_view_seq_no.to_i == 1 # @last_visit_start_time and (@last_visit_start_time.to_i == @last_visit_end_time.to_i)</code>
|
|
3121
3163
|
</li>
|
|
3122
3164
|
|
|
3123
3165
|
<li class="covered" data-hits="4" data-linenumber="63">
|
|
3124
3166
|
<span class="hits">4</span>
|
|
3125
3167
|
|
|
3126
|
-
<code class="ruby">
|
|
3168
|
+
<code class="ruby"> @rack_response</code>
|
|
3127
3169
|
</li>
|
|
3128
3170
|
|
|
3129
3171
|
<li class="never" data-hits="" data-linenumber="64">
|
|
3130
3172
|
|
|
3131
3173
|
|
|
3132
|
-
<code class="ruby">
|
|
3174
|
+
<code class="ruby"> end</code>
|
|
3133
3175
|
</li>
|
|
3134
3176
|
|
|
3135
3177
|
<li class="never" data-hits="" data-linenumber="65">
|
|
@@ -3141,73 +3183,73 @@
|
|
|
3141
3183
|
<li class="covered" data-hits="1" data-linenumber="66">
|
|
3142
3184
|
<span class="hits">1</span>
|
|
3143
3185
|
|
|
3144
|
-
<code class="ruby">
|
|
3186
|
+
<code class="ruby"> def exec_custom_methods(type)</code>
|
|
3145
3187
|
</li>
|
|
3146
3188
|
|
|
3147
3189
|
<li class="covered" data-hits="7" data-linenumber="67">
|
|
3148
3190
|
<span class="hits">7</span>
|
|
3149
3191
|
|
|
3150
|
-
<code class="ruby">
|
|
3192
|
+
<code class="ruby"> Metrics.public_instance_methods.each do |meth|</code>
|
|
3151
3193
|
</li>
|
|
3152
3194
|
|
|
3153
3195
|
<li class="covered" data-hits="112" data-linenumber="68">
|
|
3154
3196
|
<span class="hits">112</span>
|
|
3155
3197
|
|
|
3156
|
-
<code class="ruby">
|
|
3198
|
+
<code class="ruby"> if m = meth.to_s.match(/^([a-z_]*)_(count|ratio)_per_#{type}$/)</code>
|
|
3157
3199
|
</li>
|
|
3158
3200
|
|
|
3159
3201
|
<li class="covered" data-hits="53" data-linenumber="69">
|
|
3160
3202
|
<span class="hits">53</span>
|
|
3161
3203
|
|
|
3162
|
-
<code class="ruby">
|
|
3204
|
+
<code class="ruby"> begin</code>
|
|
3163
3205
|
</li>
|
|
3164
3206
|
|
|
3165
3207
|
<li class="covered" data-hits="53" data-linenumber="70">
|
|
3166
3208
|
<span class="hits">53</span>
|
|
3167
3209
|
|
|
3168
|
-
<code class="ruby">
|
|
3210
|
+
<code class="ruby"> return_value = self.send(meth)</code>
|
|
3169
3211
|
</li>
|
|
3170
3212
|
|
|
3171
3213
|
<li class="covered" data-hits="53" data-linenumber="71">
|
|
3172
3214
|
<span class="hits">53</span>
|
|
3173
3215
|
|
|
3174
|
-
<code class="ruby">
|
|
3216
|
+
<code class="ruby"> track(m.to_a[1], return_value) if return_value</code>
|
|
3175
3217
|
</li>
|
|
3176
3218
|
|
|
3177
3219
|
<li class="never" data-hits="" data-linenumber="72">
|
|
3178
3220
|
|
|
3179
3221
|
|
|
3180
|
-
<code class="ruby">
|
|
3222
|
+
<code class="ruby"> rescue => e</code>
|
|
3181
3223
|
</li>
|
|
3182
3224
|
|
|
3183
3225
|
<li class="missed" data-hits="0" data-linenumber="73">
|
|
3184
3226
|
|
|
3185
3227
|
|
|
3186
|
-
<code class="ruby">
|
|
3228
|
+
<code class="ruby"> warn "#{meth} resulted in an exception #{e}"</code>
|
|
3187
3229
|
</li>
|
|
3188
3230
|
|
|
3189
3231
|
<li class="never" data-hits="" data-linenumber="74">
|
|
3190
3232
|
|
|
3191
3233
|
|
|
3192
|
-
<code class="ruby">
|
|
3234
|
+
<code class="ruby"> end</code>
|
|
3193
3235
|
</li>
|
|
3194
3236
|
|
|
3195
3237
|
<li class="never" data-hits="" data-linenumber="75">
|
|
3196
3238
|
|
|
3197
3239
|
|
|
3198
|
-
<code class="ruby">
|
|
3240
|
+
<code class="ruby"> end</code>
|
|
3199
3241
|
</li>
|
|
3200
3242
|
|
|
3201
3243
|
<li class="never" data-hits="" data-linenumber="76">
|
|
3202
3244
|
|
|
3203
3245
|
|
|
3204
|
-
<code class="ruby">
|
|
3246
|
+
<code class="ruby"> end</code>
|
|
3205
3247
|
</li>
|
|
3206
3248
|
|
|
3207
3249
|
<li class="never" data-hits="" data-linenumber="77">
|
|
3208
3250
|
|
|
3209
3251
|
|
|
3210
|
-
<code class="ruby">
|
|
3252
|
+
<code class="ruby"> end</code>
|
|
3211
3253
|
</li>
|
|
3212
3254
|
|
|
3213
3255
|
<li class="never" data-hits="" data-linenumber="78">
|
|
@@ -3219,43 +3261,43 @@
|
|
|
3219
3261
|
<li class="never" data-hits="" data-linenumber="79">
|
|
3220
3262
|
|
|
3221
3263
|
|
|
3222
|
-
<code class="ruby">
|
|
3264
|
+
<code class="ruby"> # helpers</code>
|
|
3223
3265
|
</li>
|
|
3224
3266
|
|
|
3225
3267
|
<li class="covered" data-hits="1" data-linenumber="80">
|
|
3226
3268
|
<span class="hits">1</span>
|
|
3227
3269
|
|
|
3228
|
-
<code class="ruby">
|
|
3270
|
+
<code class="ruby"> def counter(metric_name)</code>
|
|
3229
3271
|
</li>
|
|
3230
3272
|
|
|
3231
3273
|
<li class="covered" data-hits="6" data-linenumber="81">
|
|
3232
3274
|
<span class="hits">6</span>
|
|
3233
3275
|
|
|
3234
|
-
<code class="ruby">
|
|
3276
|
+
<code class="ruby"> n = RedisAnalytics.redis_connection.incr("#{@redis_key_prefix}#{metric_name}")</code>
|
|
3235
3277
|
</li>
|
|
3236
3278
|
|
|
3237
3279
|
<li class="never" data-hits="" data-linenumber="82">
|
|
3238
3280
|
|
|
3239
3281
|
|
|
3240
|
-
<code class="ruby">
|
|
3282
|
+
<code class="ruby"> # to debug, uncomment this line</code>
|
|
3241
3283
|
</li>
|
|
3242
3284
|
|
|
3243
3285
|
<li class="never" data-hits="" data-linenumber="83">
|
|
3244
3286
|
|
|
3245
3287
|
|
|
3246
|
-
<code class="ruby">
|
|
3288
|
+
<code class="ruby"> # puts "COUNT #{metric_name} -> #{n}"</code>
|
|
3247
3289
|
</li>
|
|
3248
3290
|
|
|
3249
3291
|
<li class="covered" data-hits="6" data-linenumber="84">
|
|
3250
3292
|
<span class="hits">6</span>
|
|
3251
3293
|
|
|
3252
|
-
<code class="ruby">
|
|
3294
|
+
<code class="ruby"> return n</code>
|
|
3253
3295
|
</li>
|
|
3254
3296
|
|
|
3255
3297
|
<li class="never" data-hits="" data-linenumber="85">
|
|
3256
3298
|
|
|
3257
3299
|
|
|
3258
|
-
<code class="ruby">
|
|
3300
|
+
<code class="ruby"> end</code>
|
|
3259
3301
|
</li>
|
|
3260
3302
|
|
|
3261
3303
|
<li class="never" data-hits="" data-linenumber="86">
|
|
@@ -3267,43 +3309,43 @@
|
|
|
3267
3309
|
<li class="covered" data-hits="1" data-linenumber="87">
|
|
3268
3310
|
<span class="hits">1</span>
|
|
3269
3311
|
|
|
3270
|
-
<code class="ruby">
|
|
3312
|
+
<code class="ruby"> def updated_current_visit_info</code>
|
|
3271
3313
|
</li>
|
|
3272
3314
|
|
|
3273
3315
|
<li class="covered" data-hits="4" data-linenumber="88">
|
|
3274
3316
|
<span class="hits">4</span>
|
|
3275
3317
|
|
|
3276
|
-
<code class="ruby">
|
|
3318
|
+
<code class="ruby"> value = [@first_visit_seq.to_i, @current_visit_seq.to_i, @page_view_seq_no.to_i + 1, (@last_visit_start_time || @t).to_i, @t.to_i]</code>
|
|
3277
3319
|
</li>
|
|
3278
3320
|
|
|
3279
3321
|
<li class="never" data-hits="" data-linenumber="89">
|
|
3280
3322
|
|
|
3281
3323
|
|
|
3282
|
-
<code class="ruby">
|
|
3324
|
+
<code class="ruby"> # to debug, uncomment this line</code>
|
|
3283
3325
|
</li>
|
|
3284
3326
|
|
|
3285
3327
|
<li class="never" data-hits="" data-linenumber="90">
|
|
3286
3328
|
|
|
3287
3329
|
|
|
3288
|
-
<code class="ruby">
|
|
3330
|
+
<code class="ruby"> # puts "UPDATING VCN COOKIE -> #{value}"</code>
|
|
3289
3331
|
</li>
|
|
3290
3332
|
|
|
3291
3333
|
<li class="covered" data-hits="4" data-linenumber="91">
|
|
3292
3334
|
<span class="hits">4</span>
|
|
3293
3335
|
|
|
3294
|
-
<code class="ruby">
|
|
3336
|
+
<code class="ruby"> expires = @t + RedisAnalytics.visit_timeout.to_i.minutes</code>
|
|
3295
3337
|
</li>
|
|
3296
3338
|
|
|
3297
3339
|
<li class="covered" data-hits="4" data-linenumber="92">
|
|
3298
3340
|
<span class="hits">4</span>
|
|
3299
3341
|
|
|
3300
|
-
<code class="ruby">
|
|
3342
|
+
<code class="ruby"> {:value => value.join('.'), :expires => expires}</code>
|
|
3301
3343
|
</li>
|
|
3302
3344
|
|
|
3303
3345
|
<li class="never" data-hits="" data-linenumber="93">
|
|
3304
3346
|
|
|
3305
3347
|
|
|
3306
|
-
<code class="ruby">
|
|
3348
|
+
<code class="ruby"> end</code>
|
|
3307
3349
|
</li>
|
|
3308
3350
|
|
|
3309
3351
|
<li class="never" data-hits="" data-linenumber="94">
|
|
@@ -3315,43 +3357,43 @@
|
|
|
3315
3357
|
<li class="covered" data-hits="1" data-linenumber="95">
|
|
3316
3358
|
<span class="hits">1</span>
|
|
3317
3359
|
|
|
3318
|
-
<code class="ruby">
|
|
3360
|
+
<code class="ruby"> def updated_first_visit_info</code>
|
|
3319
3361
|
</li>
|
|
3320
3362
|
|
|
3321
3363
|
<li class="covered" data-hits="4" data-linenumber="96">
|
|
3322
3364
|
<span class="hits">4</span>
|
|
3323
3365
|
|
|
3324
|
-
<code class="ruby">
|
|
3366
|
+
<code class="ruby"> value = [@first_visit_seq.to_i, (@first_visit_time || @t).to_i, @t.to_i]</code>
|
|
3325
3367
|
</li>
|
|
3326
3368
|
|
|
3327
3369
|
<li class="never" data-hits="" data-linenumber="97">
|
|
3328
3370
|
|
|
3329
3371
|
|
|
3330
|
-
<code class="ruby">
|
|
3372
|
+
<code class="ruby"> # to debug, uncomment this line</code>
|
|
3331
3373
|
</li>
|
|
3332
3374
|
|
|
3333
3375
|
<li class="never" data-hits="" data-linenumber="98">
|
|
3334
3376
|
|
|
3335
3377
|
|
|
3336
|
-
<code class="ruby">
|
|
3378
|
+
<code class="ruby"> # puts "UPDATING RUCN COOKIE -> #{value}"</code>
|
|
3337
3379
|
</li>
|
|
3338
3380
|
|
|
3339
3381
|
<li class="covered" data-hits="4" data-linenumber="99">
|
|
3340
3382
|
<span class="hits">4</span>
|
|
3341
3383
|
|
|
3342
|
-
<code class="ruby">
|
|
3384
|
+
<code class="ruby"> expires = @t + 1.year</code>
|
|
3343
3385
|
</li>
|
|
3344
3386
|
|
|
3345
3387
|
<li class="covered" data-hits="4" data-linenumber="100">
|
|
3346
3388
|
<span class="hits">4</span>
|
|
3347
3389
|
|
|
3348
|
-
<code class="ruby">
|
|
3390
|
+
<code class="ruby"> {:value => value.join('.'), :expires => expires}</code>
|
|
3349
3391
|
</li>
|
|
3350
3392
|
|
|
3351
3393
|
<li class="never" data-hits="" data-linenumber="101">
|
|
3352
3394
|
|
|
3353
3395
|
|
|
3354
|
-
<code class="ruby">
|
|
3396
|
+
<code class="ruby"> end</code>
|
|
3355
3397
|
</li>
|
|
3356
3398
|
|
|
3357
3399
|
<li class="never" data-hits="" data-linenumber="102">
|
|
@@ -3363,91 +3405,91 @@
|
|
|
3363
3405
|
<li class="covered" data-hits="1" data-linenumber="103">
|
|
3364
3406
|
<span class="hits">1</span>
|
|
3365
3407
|
|
|
3366
|
-
<code class="ruby">
|
|
3408
|
+
<code class="ruby"> def track(metric_name, metric_value)</code>
|
|
3367
3409
|
</li>
|
|
3368
3410
|
|
|
3369
3411
|
<li class="covered" data-hits="38" data-linenumber="104">
|
|
3370
3412
|
<span class="hits">38</span>
|
|
3371
3413
|
|
|
3372
|
-
<code class="ruby">
|
|
3414
|
+
<code class="ruby"> n = 0</code>
|
|
3373
3415
|
</li>
|
|
3374
3416
|
|
|
3375
3417
|
<li class="covered" data-hits="38" data-linenumber="105">
|
|
3376
3418
|
<span class="hits">38</span>
|
|
3377
3419
|
|
|
3378
|
-
<code class="ruby">
|
|
3420
|
+
<code class="ruby"> RedisAnalytics.redis_connection.hmset("#{@redis_key_prefix}#METRICS", metric_name, metric_value.class)</code>
|
|
3379
3421
|
</li>
|
|
3380
3422
|
|
|
3381
3423
|
<li class="covered" data-hits="38" data-linenumber="106">
|
|
3382
3424
|
<span class="hits">38</span>
|
|
3383
3425
|
|
|
3384
|
-
<code class="ruby">
|
|
3426
|
+
<code class="ruby"> for_each_time_range(@t) do |ts|</code>
|
|
3385
3427
|
</li>
|
|
3386
3428
|
|
|
3387
3429
|
<li class="covered" data-hits="190" data-linenumber="107">
|
|
3388
3430
|
<span class="hits">190</span>
|
|
3389
3431
|
|
|
3390
|
-
<code class="ruby">
|
|
3432
|
+
<code class="ruby"> key = "#{@redis_key_prefix}#{metric_name}:#{ts}"</code>
|
|
3391
3433
|
</li>
|
|
3392
3434
|
|
|
3393
3435
|
<li class="covered" data-hits="190" data-linenumber="108">
|
|
3394
3436
|
<span class="hits">190</span>
|
|
3395
3437
|
|
|
3396
|
-
<code class="ruby">
|
|
3438
|
+
<code class="ruby"> if metric_value.is_a?(Fixnum)</code>
|
|
3397
3439
|
</li>
|
|
3398
3440
|
|
|
3399
3441
|
<li class="covered" data-hits="75" data-linenumber="109">
|
|
3400
3442
|
<span class="hits">75</span>
|
|
3401
3443
|
|
|
3402
|
-
<code class="ruby">
|
|
3444
|
+
<code class="ruby"> n = RedisAnalytics.redis_connection.incrby(key, metric_value)</code>
|
|
3403
3445
|
</li>
|
|
3404
3446
|
|
|
3405
3447
|
<li class="never" data-hits="" data-linenumber="110">
|
|
3406
3448
|
|
|
3407
3449
|
|
|
3408
|
-
<code class="ruby">
|
|
3450
|
+
<code class="ruby"> else</code>
|
|
3409
3451
|
</li>
|
|
3410
3452
|
|
|
3411
3453
|
<li class="covered" data-hits="115" data-linenumber="111">
|
|
3412
3454
|
<span class="hits">115</span>
|
|
3413
3455
|
|
|
3414
|
-
<code class="ruby">
|
|
3456
|
+
<code class="ruby"> n = RedisAnalytics.redis_connection.zincrby(key, 1, metric_value)</code>
|
|
3415
3457
|
</li>
|
|
3416
3458
|
|
|
3417
3459
|
<li class="never" data-hits="" data-linenumber="112">
|
|
3418
3460
|
|
|
3419
3461
|
|
|
3420
|
-
<code class="ruby">
|
|
3462
|
+
<code class="ruby"> end</code>
|
|
3421
3463
|
</li>
|
|
3422
3464
|
|
|
3423
3465
|
<li class="never" data-hits="" data-linenumber="113">
|
|
3424
3466
|
|
|
3425
3467
|
|
|
3426
|
-
<code class="ruby">
|
|
3468
|
+
<code class="ruby"> end</code>
|
|
3427
3469
|
</li>
|
|
3428
3470
|
|
|
3429
3471
|
<li class="never" data-hits="" data-linenumber="114">
|
|
3430
3472
|
|
|
3431
3473
|
|
|
3432
|
-
<code class="ruby">
|
|
3474
|
+
<code class="ruby"> # to debug, uncomment this line</code>
|
|
3433
3475
|
</li>
|
|
3434
3476
|
|
|
3435
3477
|
<li class="never" data-hits="" data-linenumber="115">
|
|
3436
3478
|
|
|
3437
3479
|
|
|
3438
|
-
<code class="ruby">
|
|
3480
|
+
<code class="ruby"> # puts "TRACK #{metric_name} -> #{n}" </code>
|
|
3439
3481
|
</li>
|
|
3440
3482
|
|
|
3441
3483
|
<li class="covered" data-hits="38" data-linenumber="116">
|
|
3442
3484
|
<span class="hits">38</span>
|
|
3443
3485
|
|
|
3444
|
-
<code class="ruby">
|
|
3486
|
+
<code class="ruby"> return n</code>
|
|
3445
3487
|
</li>
|
|
3446
3488
|
|
|
3447
3489
|
<li class="never" data-hits="" data-linenumber="117">
|
|
3448
3490
|
|
|
3449
3491
|
|
|
3450
|
-
<code class="ruby">
|
|
3492
|
+
<code class="ruby"> end</code>
|
|
3451
3493
|
</li>
|
|
3452
3494
|
|
|
3453
3495
|
<li class="never" data-hits="" data-linenumber="118">
|
|
@@ -3459,13 +3501,13 @@
|
|
|
3459
3501
|
<li class="never" data-hits="" data-linenumber="119">
|
|
3460
3502
|
|
|
3461
3503
|
|
|
3462
|
-
<code class="ruby">
|
|
3504
|
+
<code class="ruby"> end</code>
|
|
3463
3505
|
</li>
|
|
3464
3506
|
|
|
3465
3507
|
<li class="never" data-hits="" data-linenumber="120">
|
|
3466
3508
|
|
|
3467
3509
|
|
|
3468
|
-
<code class="ruby">
|
|
3510
|
+
<code class="ruby">end</code>
|
|
3469
3511
|
</li>
|
|
3470
3512
|
|
|
3471
3513
|
<li class="never" data-hits="" data-linenumber="121">
|