action_tracker 0.1.3 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 469c3d3178839b4b363a1486cd7ab1a48bce4562
4
- data.tar.gz: 378183a75a3a54544d6eef48e92ed4714da11d95
3
+ metadata.gz: 638907fb87e39ca2a30f4b47e2943ddafd38c404
4
+ data.tar.gz: 4ae63d3897e1f6af7c32de1f50723e4d95e9d228
5
5
  SHA512:
6
- metadata.gz: f318632a0b0fe0ebc5e8cada9b7b157d2f0bcdcec88cf97eead2c95e14c8304cf8bd132d01d974fc3ce98f627b3ea8d24b866934d57e17fe51600e4d1d45a140
7
- data.tar.gz: 72cb25c4a82f5ec36b460974cb714e55e92215447cfd2a6db2f6503ed7693928368a82450ccc5a5bc53368bbd0579738ab310a9d86e96ec92f51fabd6947b46a
6
+ metadata.gz: d1ca2681d020e4c0188f1204335a8925de6fed957a45f3724a558f8e5a78c43eff7d6b71a1a6a153f37d008fb62185606a9f16175a28b06bcab0355f2dfb46de
7
+ data.tar.gz: 4725862c5725de5bd8930c010e73cd47ba9ee6bc6c4b183d7fa61b3a7062228709cdc9c20a49fe8ee89a4bab9a1eff5e351669fbb9a79d915b175e3325e6804d
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  <a href="https://codeclimate.com/github/appprova/action_tracker"><img src="https://codeclimate.com/github/appprova/action_tracker/badges/gpa.svg" /></a>
2
2
  [![Build Status](https://travis-ci.org/appprova/action_tracker.svg?branch=develop)](https://travis-ci.org/appprova/action_tracker)
3
+ [ ![Codeship Status for appprova/action_tracker](https://codeship.com/projects/a038f7b0-f2ce-0133-3399-42c612817579/status?branch=master)](https://codeship.com/projects/149594)
3
4
 
4
5
  # Action Tracker
5
6
 
@@ -0,0 +1,115 @@
1
+
2
+ var ActionTracker = function () {
3
+
4
+ var storage,
5
+ callbacks = {};
6
+
7
+ function constructor() {
8
+ storage = new Storage();
9
+ }
10
+
11
+ function setCallbacks(callbacksObj) {
12
+ callbacks = callbacksObj;
13
+ }
14
+
15
+ function start(list) {
16
+ storage.queue(list);
17
+ }
18
+
19
+ function process() {
20
+ while(typeof storage.getFirst() !== 'undefined') {
21
+ var tracker = new Tracker(storage.dequeue());
22
+ tracker.send();
23
+ }
24
+ }
25
+
26
+ function Storage() {
27
+
28
+ this.storage = [];
29
+
30
+ this.constructor = function() {
31
+ if(sessionStorage.getItem('action_tracker_storage'))
32
+ this.getStorage();
33
+ else
34
+ this.setStorage();
35
+ };
36
+
37
+ this.getStorage = function() {
38
+ this.storage = JSON.parse(sessionStorage.getItem('action_tracker_storage'));
39
+ };
40
+
41
+ this.setStorage = function() {
42
+ sessionStorage.setItem('action_tracker_storage', JSON.stringify(this.storage));
43
+ };
44
+
45
+ this.queue = function(list) {
46
+ if(list != null) {
47
+ this.getStorage();
48
+ for (var i = 0; i < list.length; i++)
49
+ this.storage.push(list[i]);
50
+ this.setStorage();
51
+ }
52
+ };
53
+
54
+ this.dequeue = function() {
55
+ this.getStorage();
56
+ var first = this.storage[0];
57
+ this.storage.splice(0, 1);
58
+ this.setStorage();
59
+ return first;
60
+ };
61
+
62
+ this.getFirst = function() {
63
+ this.getStorage();
64
+ return this.storage[0];
65
+ };
66
+
67
+ this.constructor();
68
+ };
69
+
70
+ function Tracker(tracker_data) {
71
+
72
+ this.userFlag = false;
73
+ this.dataFlag = false;
74
+ this.user = null;
75
+ this.data = null;
76
+
77
+ if(typeof tracker_data !== 'undefined') {
78
+ if(typeof tracker_data.identify !== 'undefined') {
79
+ this.userFlag = true;
80
+ this.user = new User(tracker_data.identify);
81
+ }
82
+ if(typeof tracker_data.track !== 'undefined') {
83
+ this.dataFlag = true;
84
+ this.data = tracker_data.track;
85
+ }
86
+ }
87
+
88
+ this.send = function() {
89
+ if(this.userFlag) callbacks.identify(this.user.getData());
90
+ if(this.dataFlag) callbacks.track(this.data);
91
+ };
92
+ };
93
+
94
+ function User(user_data) {
95
+ this.data = user_data;
96
+ this.data.id = callbacks.generateID(this.data.email);
97
+
98
+ this.getData = function() {
99
+ return this.data;
100
+ };
101
+ };
102
+
103
+ var public = {
104
+ Tracker: Tracker,
105
+ User: User,
106
+ Storage: Storage,
107
+ new: start,
108
+ push: process,
109
+ callbacks: setCallbacks
110
+ };
111
+
112
+ constructor();
113
+
114
+ return public;
115
+ }();
@@ -13,7 +13,7 @@ module ActionTracker
13
13
  end
14
14
 
15
15
  def render(*args)
16
- track_event
16
+ conditional_track_event
17
17
  session[:action_tracked] = true
18
18
  super
19
19
  end
@@ -34,6 +34,14 @@ module ActionTracker
34
34
  session[:action_tracker] << tracker_params unless tracker_params.blank?
35
35
  end
36
36
 
37
+ def digest
38
+ return unless session[:action_tracker].present?
39
+ session[:action_tracked] = true
40
+ output = session[:action_tracker].flatten
41
+ session[:action_tracker] = nil
42
+ output
43
+ end
44
+
37
45
  def tracker_klass
38
46
  @tracker_klass ||= "#{namespace}#{controller_name.camelize}Tracker"
39
47
  end
@@ -0,0 +1 @@
1
+ require 'action_tracker/matchers/have_action_tracker_matcher'
@@ -0,0 +1,17 @@
1
+ RSpec::Matchers.define :have_action_tracker do
2
+ match do |actual|
3
+ actual.respond_to? 'track_event'
4
+ end
5
+
6
+ description do
7
+ "responds to #track_event."
8
+ end
9
+
10
+ failure_message do |actual|
11
+ "expected that #{actual} responded to #track_event, but it didn't."
12
+ end
13
+
14
+ failure_message_when_negated do |actual|
15
+ "expected that #{actual} would not respond to #track_event, but it did."
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module ActionTracker
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.1.4'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_tracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Taiar
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-05-02 00:00:00.000000000 Z
12
+ date: 2016-05-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -156,6 +156,7 @@ files:
156
156
  - README.md
157
157
  - Rakefile
158
158
  - action_tracker.gemspec
159
+ - app/assets/javascripts/action_tracker.js
159
160
  - bin/console
160
161
  - bin/setup
161
162
  - lib/action_tracker.rb
@@ -164,6 +165,8 @@ files:
164
165
  - lib/action_tracker/configuration.rb
165
166
  - lib/action_tracker/engine.rb
166
167
  - lib/action_tracker/helpers/render.rb
168
+ - lib/action_tracker/matchers.rb
169
+ - lib/action_tracker/matchers/have_action_tracker_matcher.rb
167
170
  - lib/action_tracker/version.rb
168
171
  homepage: http://coders.appprova.com.br/
169
172
  licenses:
@@ -185,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
188
  version: '0'
186
189
  requirements: []
187
190
  rubyforge_project:
188
- rubygems_version: 2.4.5
191
+ rubygems_version: 2.4.8
189
192
  signing_key:
190
193
  specification_version: 4
191
194
  summary: Easy way to track actions in your application.