app_monit 0.0.1 → 0.0.2
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/.ruby-gemset +1 -0
- data/README.md +102 -1
- data/lib/app_monit/config.rb +5 -1
- data/lib/app_monit/event.rb +5 -1
- data/lib/app_monit/version.rb +1 -1
- data/spec/app_monit/event_spec.rb +20 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6dc9e44529d531ea68014aa8ae4a9e3db8b58606
|
4
|
+
data.tar.gz: 604fec1a5f824061397732fdde64f78b6e699eed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9171a668759d6fb693299ab8cc6c04f415e7ce8934bd0b35b36665005dd8e198a21f8790fa976fa6cd7f060a895f4b3bbf322089b4d2d2535943863ad24edf3e
|
7
|
+
data.tar.gz: f8eb9f13c51202064f09b0166fde7da9c97c6c107ed581b4a77b903f16d15d9db56e90660ea023d9aef6a90a9b2f291e00cbaf7a4e98f59a6c68018fb667ab96
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
app_monit_gem
|
data/README.md
CHANGED
@@ -20,7 +20,108 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
23
|
+
### Configure the client
|
24
|
+
|
25
|
+
AppMonit::Config.api_key = '<YOUR_API_KEY>'
|
26
|
+
AppMonit::Config.end_point = 'https://api.appmon.it'
|
27
|
+
AppMonit::Config.env = Rails.env.to_s
|
28
|
+
|
29
|
+
### Create an event
|
30
|
+
|
31
|
+
event_name = 'authentication'
|
32
|
+
payload_hash = {user: {id: 1, name: 'John'} }
|
33
|
+
AppMonit::Event.create(event_name, payload_hash)
|
34
|
+
|
35
|
+
### Query
|
36
|
+
|
37
|
+
You can use the following metrics to query your data
|
38
|
+
|
39
|
+
* count
|
40
|
+
* count_unique
|
41
|
+
* minimum
|
42
|
+
* maximum
|
43
|
+
* average
|
44
|
+
* sum
|
45
|
+
* funnel
|
46
|
+
|
47
|
+
AppMonit::Event.create(:registered, user: {id: '1'})
|
48
|
+
AppMonit::Event.create(:registered, user: {id: '2'})
|
49
|
+
AppMonit::Event.create(:purchase, user: {id: '1'}, product: { price_in_cents: 100, name: 'water', alcoholic: false })
|
50
|
+
AppMonit::Event.create(:purchase, user: {id: '1'}, product: { price_in_cents: 150, name: 'soda', alcoholic: false })
|
51
|
+
AppMonit::Event.create(:purchase, user: {id: '1'}, product: { price_in_cents: 200, name: 'beer', alcoholic: true })
|
52
|
+
|
53
|
+
#### count
|
54
|
+
AppMonit::Query.count(:purchase) # { 'result' => 3 }
|
55
|
+
|
56
|
+
#### count
|
57
|
+
AppMonit::Query.count_unique(:purchase) # { 'result' => 2, target_property: 'product.name' }
|
58
|
+
|
59
|
+
#### minimum
|
60
|
+
AppMonit::Query.minimum(:purchase, target_property: 'product.price_in_cents') # { 'result' => 100 }
|
61
|
+
|
62
|
+
#### minimum
|
63
|
+
AppMonit::Query.maximum(:purchase, target_property: 'product.price_in_cents') # { 'result' => 200 }
|
64
|
+
|
65
|
+
#### average
|
66
|
+
AppMonit::Query.average(:purchase, target_property: 'product.price_in_cents') # { 'result' => 150 }
|
67
|
+
|
68
|
+
#### sum
|
69
|
+
AppMonit::Query.sum(:purchase, target_property: 'product.price_in_cents') # { 'result' => 450 }
|
70
|
+
|
71
|
+
#### funnel
|
72
|
+
AppMonit::Query.funnel(steps: [
|
73
|
+
{ event_collection: 'registered', actor_property: 'user.id'},
|
74
|
+
{ event_collection: 'purchase', actor_property: 'user.id'}
|
75
|
+
] # { 'result' => { 'result' => [ 2, 1], 'steps' => [{ event_collection: 'registered', actor_property: 'user.id'},
|
76
|
+
{ event_collection: 'purchase', actor_property: 'user.id'}]
|
77
|
+
|
78
|
+
#### Timeframe
|
79
|
+
AppMonit::Query.count('registered', timeframe: 'this_week')
|
80
|
+
|
81
|
+
Options
|
82
|
+
|
83
|
+
* this_minute
|
84
|
+
* this_hour
|
85
|
+
* this_day
|
86
|
+
* this_week
|
87
|
+
* this_month
|
88
|
+
* this_year
|
89
|
+
|
90
|
+
Or with n: this_n_minutes (n = 2 => this_2_minutes)
|
91
|
+
|
92
|
+
This can also be replaced with previous: previous_minute and previous_n_minutes
|
93
|
+
|
94
|
+
#### Interval
|
95
|
+
This can be used with timeframe
|
96
|
+
AppMonit::Query.count('registered', timeframe: 'this_week', interval: 'daily')
|
97
|
+
|
98
|
+
* minutely
|
99
|
+
* hourly
|
100
|
+
* daily
|
101
|
+
* monthly
|
102
|
+
* yearly
|
103
|
+
* weekly
|
104
|
+
|
105
|
+
Also with n: every_n_minutes (n = 2 => every_2_minutes)
|
106
|
+
|
107
|
+
#### Group by
|
108
|
+
AppMonit::Query.count('registered', group_by: 'alcoholic') # { 'result' => [ {'alcoholic' => true, result => 1 }
|
109
|
+
{'alcoholic' => false, result => 2 }]
|
110
|
+
|
111
|
+
#### Filter
|
112
|
+
AppMonit::Query.count('registered', filters: [{property_name: 'product.name', operator: 'eq', property_value: 'soda'}])
|
113
|
+
|
114
|
+
Allowed operators
|
115
|
+
|
116
|
+
* eq
|
117
|
+
* neq
|
118
|
+
* lt
|
119
|
+
* lte
|
120
|
+
* gt
|
121
|
+
* gte
|
122
|
+
* exists
|
123
|
+
* in
|
124
|
+
* nin
|
24
125
|
|
25
126
|
## Contributing
|
26
127
|
|
data/lib/app_monit/config.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module AppMonit
|
2
2
|
class Config
|
3
3
|
class << self
|
4
|
-
attr_writer :api_key, :env, :end_point
|
4
|
+
attr_writer :api_key, :env, :end_point, :fail_silent
|
5
5
|
|
6
6
|
def api_key
|
7
7
|
@api_key || raise(ApiKeyNotSetError.new("Please set your API key"))
|
@@ -14,6 +14,10 @@ module AppMonit
|
|
14
14
|
def end_point
|
15
15
|
@end_point || "http://api.appmon.it"
|
16
16
|
end
|
17
|
+
|
18
|
+
def fail_silent
|
19
|
+
@fail_silent || false
|
20
|
+
end
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
data/lib/app_monit/event.rb
CHANGED
@@ -6,12 +6,16 @@ module AppMonit
|
|
6
6
|
create!(*args)
|
7
7
|
rescue Http::Error
|
8
8
|
false
|
9
|
+
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse,
|
10
|
+
Net::HTTPHeaderSyntaxError, Net::ProtocolError => error
|
11
|
+
raise error unless AppMonit::Config.fail_silent
|
12
|
+
false
|
9
13
|
end
|
10
14
|
|
11
15
|
def self.create!(name, data_hash = {})
|
12
16
|
created_at = data_hash.delete(:created_at) || Time.now.utc
|
13
17
|
|
14
|
-
message
|
18
|
+
message = { created_at: created_at, name: name, payload: data_hash }
|
15
19
|
client.post('/v1/events', message)
|
16
20
|
end
|
17
21
|
|
data/lib/app_monit/version.rb
CHANGED
@@ -31,6 +31,26 @@ describe AppMonit::Event do
|
|
31
31
|
assert_equal false, subject.create
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
35
|
+
describe 'when the AppMonit::Config.fail_silent is set' do
|
36
|
+
it 'returns false if any Http related error is raised' do
|
37
|
+
AppMonit::Config.fail_silent = true
|
38
|
+
|
39
|
+
subject.stub(:create!, -> { raise Timeout::Error }) do
|
40
|
+
assert_equal false, subject.create
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'when the AppMonit::Config.fail_silent is NOT set' do
|
46
|
+
it 'raises the rescued Http related error again' do
|
47
|
+
AppMonit::Config.fail_silent = false
|
48
|
+
|
49
|
+
subject.stub(:create!, -> { raise Timeout::Error }) do
|
50
|
+
assert_raises(Timeout::Error) { subject.create }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
34
54
|
end
|
35
55
|
|
36
56
|
describe '#create!' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: app_monit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Redmar Kerkhoff
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-04-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -104,6 +104,7 @@ extensions: []
|
|
104
104
|
extra_rdoc_files: []
|
105
105
|
files:
|
106
106
|
- ".gitignore"
|
107
|
+
- ".ruby-gemset"
|
107
108
|
- ".ruby-version"
|
108
109
|
- ".travis.yml"
|
109
110
|
- Gemfile
|