pirate_metrics_agent 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -21,7 +21,20 @@ You'll probably want something like the above, only enabling the agent in produ
21
21
  Now you can begin to use Pirate Metrics to track your application.
22
22
 
23
23
  ```sh
24
- PM.acquisition({ :email => 'joe@example.com'}) # new user acquisition
24
+ # new user acquisition
25
+ PM.acquisition({ :email => 'joe@example.com'})
26
+
27
+ # joe activates
28
+ PM.activation({ :email => 'joe@example.com'})
29
+
30
+ # joe uses your product many times
31
+ PM.retention({ :email => 'joe@example.com'})
32
+
33
+ # joe gets someone else to sign up
34
+ PM.referral({ :customer_email => 'joe@example.com', :referree_email => 'bob@bigmoney.example.com'})
35
+
36
+ # joe pays
37
+ PM.revenue({ :email => 'joe@example.com', :amount_in_cents => 100})
25
38
  ```
26
39
 
27
40
  **Note**: For your app's safety, the agent is meant to isolate your app from any problems our service might suffer. If it is unable to connect to the service, it will discard data after reaching a low memory threshold.
@@ -132,19 +132,18 @@ module PirateMetrics
132
132
  if running?
133
133
  logger.info "Cleaning up agent, queue size: #{@queue.size}, thread running: #{@thread.alive?}"
134
134
  @allow_reconnect = false
135
- if @queue.size > 0
136
- queue_metric('exit')
137
- begin
138
- with_timeout(EXIT_FLUSH_TIMEOUT) { @thread.join }
139
- rescue Timeout::Error
140
- if @queue.size > 0
141
- logger.error "Timed out working agent thread on exit, dropping #{@queue.size} metrics"
142
- else
143
- logger.error "Timed out PirateMetrics Agent, exiting"
144
- end
135
+ queue_metric('exit')
136
+ begin
137
+ with_timeout(EXIT_FLUSH_TIMEOUT) { @thread.join }
138
+ rescue Timeout::Error
139
+ if @queue.size > 0
140
+ logger.error "Timed out working agent thread on exit, dropping #{@queue.size} metrics"
141
+ else
142
+ logger.error "Timed out PirateMetrics Agent, exiting"
145
143
  end
146
144
  end
147
145
  end
146
+ @thread = nil
148
147
  end
149
148
 
150
149
  private
@@ -203,6 +202,7 @@ module PirateMetrics
203
202
  @failures = 0
204
203
  logger.info "Starting thread"
205
204
  @thread = Thread.new do
205
+ sleep 0 #yield back before processing anything
206
206
  run_worker_loop
207
207
  end
208
208
  end
@@ -230,6 +230,7 @@ module PirateMetrics
230
230
  else
231
231
  logger.debug "Sending: #{metric} -> #{payload.inspect}"
232
232
  result = @piratemetrics.post("/api/v1/#{metric}s", { :api_key => @api_key, :data => payload})
233
+ logger.debug "Sent returned with status code #{result.status}"
233
234
  end
234
235
  metric = payload = options = nil
235
236
  rescue Exception => err
@@ -1,3 +1,3 @@
1
1
  module PirateMetrics
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
data/spec/agent_spec.rb CHANGED
@@ -401,9 +401,14 @@ describe PirateMetrics::Agent, "connection problems" do
401
401
  it "should send commands in a process that bypasses at_exit when using #cleanup" do
402
402
  @server = TestServer.new
403
403
  @agent = @server.fresh_agent
404
- if pid = fork { @agent.acquisition({ :email => "test@example.com"}); @agent.cleanup; exit! }
404
+ if pid = fork do
405
+ @agent.acquisition({ :email => "test1@example.com"})
406
+ @agent.acquisition({ :email => "test2@example.com"})
407
+ @agent.cleanup
408
+ exit!
409
+ end
405
410
  Process.wait(pid)
406
- @server.acquisitions.size.should == 1
411
+ @server.acquisitions.size.should == 2
407
412
  end
408
413
  end
409
414
  end
metadata CHANGED
@@ -1,10 +1,10 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pirate_metrics_agent
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.1.2
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Elijah Miller
9
9
  - Christopher Zelenak
10
10
  - Kristopher Chambers
@@ -13,175 +13,129 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2012-10-31 00:00:00.000000000 Z
17
- dependencies:
18
- - !ruby/object:Gem::Dependency
16
+
17
+ date: 2012-12-19 00:00:00 Z
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
19
20
  name: faraday
20
- requirement: !ruby/object:Gem::Requirement
21
- none: false
22
- requirements:
23
- - - ~>
24
- - !ruby/object:Gem::Version
25
- version: '0.8'
26
- type: :runtime
27
21
  prerelease: false
28
- version_requirements: !ruby/object:Gem::Requirement
22
+ requirement: &id001 !ruby/object:Gem::Requirement
29
23
  none: false
30
- requirements:
24
+ requirements:
31
25
  - - ~>
32
- - !ruby/object:Gem::Version
33
- version: '0.8'
34
- - !ruby/object:Gem::Dependency
26
+ - !ruby/object:Gem::Version
27
+ version: "0.8"
28
+ type: :runtime
29
+ version_requirements: *id001
30
+ - !ruby/object:Gem::Dependency
35
31
  name: rake
36
- requirement: !ruby/object:Gem::Requirement
37
- none: false
38
- requirements:
39
- - - ! '>='
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- type: :development
43
32
  prerelease: false
44
- version_requirements: !ruby/object:Gem::Requirement
45
- none: false
46
- requirements:
47
- - - ! '>='
48
- - !ruby/object:Gem::Version
49
- version: '0'
50
- - !ruby/object:Gem::Dependency
51
- name: rack
52
- requirement: !ruby/object:Gem::Requirement
33
+ requirement: &id002 !ruby/object:Gem::Requirement
53
34
  none: false
54
- requirements:
55
- - - ! '>='
56
- - !ruby/object:Gem::Version
57
- version: '0'
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: "0"
58
39
  type: :development
40
+ version_requirements: *id002
41
+ - !ruby/object:Gem::Dependency
42
+ name: rack
59
43
  prerelease: false
60
- version_requirements: !ruby/object:Gem::Requirement
44
+ requirement: &id003 !ruby/object:Gem::Requirement
61
45
  none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
65
- version: '0'
66
- - !ruby/object:Gem::Dependency
67
- name: rspec
68
- requirement: !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
71
- - - ~>
72
- - !ruby/object:Gem::Version
73
- version: '2.0'
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
74
50
  type: :development
51
+ version_requirements: *id003
52
+ - !ruby/object:Gem::Dependency
53
+ name: rspec
75
54
  prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
55
+ requirement: &id004 !ruby/object:Gem::Requirement
77
56
  none: false
78
- requirements:
57
+ requirements:
79
58
  - - ~>
80
- - !ruby/object:Gem::Version
81
- version: '2.0'
82
- - !ruby/object:Gem::Dependency
83
- name: fuubar
84
- requirement: !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
87
- - - ! '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
59
+ - !ruby/object:Gem::Version
60
+ version: "2.0"
90
61
  type: :development
62
+ version_requirements: *id004
63
+ - !ruby/object:Gem::Dependency
64
+ name: fuubar
91
65
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
66
+ requirement: &id005 !ruby/object:Gem::Requirement
93
67
  none: false
94
- requirements:
95
- - - ! '>='
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- - !ruby/object:Gem::Dependency
99
- name: pry
100
- requirement: !ruby/object:Gem::Requirement
101
- none: false
102
- requirements:
103
- - - ~>
104
- - !ruby/object:Gem::Version
105
- version: '0.9'
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: "0"
106
72
  type: :development
73
+ version_requirements: *id005
74
+ - !ruby/object:Gem::Dependency
75
+ name: pry
107
76
  prerelease: false
108
- version_requirements: !ruby/object:Gem::Requirement
77
+ requirement: &id006 !ruby/object:Gem::Requirement
109
78
  none: false
110
- requirements:
79
+ requirements:
111
80
  - - ~>
112
- - !ruby/object:Gem::Version
113
- version: '0.9'
114
- - !ruby/object:Gem::Dependency
115
- name: guard
116
- requirement: !ruby/object:Gem::Requirement
117
- none: false
118
- requirements:
119
- - - ! '>='
120
- - !ruby/object:Gem::Version
121
- version: '0'
81
+ - !ruby/object:Gem::Version
82
+ version: "0.9"
122
83
  type: :development
84
+ version_requirements: *id006
85
+ - !ruby/object:Gem::Dependency
86
+ name: guard
123
87
  prerelease: false
124
- version_requirements: !ruby/object:Gem::Requirement
125
- none: false
126
- requirements:
127
- - - ! '>='
128
- - !ruby/object:Gem::Version
129
- version: '0'
130
- - !ruby/object:Gem::Dependency
131
- name: guard-rspec
132
- requirement: !ruby/object:Gem::Requirement
88
+ requirement: &id007 !ruby/object:Gem::Requirement
133
89
  none: false
134
- requirements:
135
- - - ! '>='
136
- - !ruby/object:Gem::Version
137
- version: '0'
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: "0"
138
94
  type: :development
95
+ version_requirements: *id007
96
+ - !ruby/object:Gem::Dependency
97
+ name: guard-rspec
139
98
  prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- none: false
142
- requirements:
143
- - - ! '>='
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- - !ruby/object:Gem::Dependency
147
- name: growl
148
- requirement: !ruby/object:Gem::Requirement
99
+ requirement: &id008 !ruby/object:Gem::Requirement
149
100
  none: false
150
- requirements:
151
- - - ! '>='
152
- - !ruby/object:Gem::Version
153
- version: '0'
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: "0"
154
105
  type: :development
106
+ version_requirements: *id008
107
+ - !ruby/object:Gem::Dependency
108
+ name: growl
155
109
  prerelease: false
156
- version_requirements: !ruby/object:Gem::Requirement
110
+ requirement: &id009 !ruby/object:Gem::Requirement
157
111
  none: false
158
- requirements:
159
- - - ! '>='
160
- - !ruby/object:Gem::Version
161
- version: '0'
162
- - !ruby/object:Gem::Dependency
163
- name: rb-fsevent
164
- requirement: !ruby/object:Gem::Requirement
165
- none: false
166
- requirements:
167
- - - ! '>='
168
- - !ruby/object:Gem::Version
169
- version: '0'
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: "0"
170
116
  type: :development
117
+ version_requirements: *id009
118
+ - !ruby/object:Gem::Dependency
119
+ name: rb-fsevent
171
120
  prerelease: false
172
- version_requirements: !ruby/object:Gem::Requirement
121
+ requirement: &id010 !ruby/object:Gem::Requirement
173
122
  none: false
174
- requirements:
175
- - - ! '>='
176
- - !ruby/object:Gem::Version
177
- version: '0'
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: "0"
127
+ type: :development
128
+ version_requirements: *id010
178
129
  description: Get to know your customers.
179
- email:
130
+ email:
180
131
  - support@piratemetrics.com
181
132
  executables: []
133
+
182
134
  extensions: []
135
+
183
136
  extra_rdoc_files: []
184
- files:
137
+
138
+ files:
185
139
  - .gitignore
186
140
  - .rspec
187
141
  - CHANGELOG.md
@@ -200,29 +154,32 @@ files:
200
154
  - spec/test_server.rb
201
155
  homepage: http://github.com/expectedbehavior/pirate_metrics_agent
202
156
  licenses: []
157
+
203
158
  post_install_message:
204
159
  rdoc_options: []
205
- require_paths:
160
+
161
+ require_paths:
206
162
  - lib
207
- required_ruby_version: !ruby/object:Gem::Requirement
163
+ required_ruby_version: !ruby/object:Gem::Requirement
208
164
  none: false
209
- requirements:
210
- - - ! '>='
211
- - !ruby/object:Gem::Version
212
- version: '0'
213
- required_rubygems_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: "0"
169
+ required_rubygems_version: !ruby/object:Gem::Requirement
214
170
  none: false
215
- requirements:
216
- - - ! '>='
217
- - !ruby/object:Gem::Version
218
- version: '0'
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: "0"
219
175
  requirements: []
176
+
220
177
  rubyforge_project:
221
- rubygems_version: 1.8.24
178
+ rubygems_version: 1.8.17
222
179
  signing_key:
223
180
  specification_version: 3
224
181
  summary: Agent for reporting data to piratemetrics.com
225
- test_files:
182
+ test_files:
226
183
  - spec/agent_spec.rb
227
184
  - spec/spec_helper.rb
228
185
  - spec/test_server.rb