bernard 0.3.0 → 0.4.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 +2 -2
- data/README.md +53 -14
- data/lib/bernard/keen/client.rb +8 -1
- data/lib/bernard/keen/methods.rb +8 -2
- data/lib/bernard/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb3c234efb7347577546da62322f8e0be7f7e468
|
4
|
+
data.tar.gz: dfee53a17404e085fcdc7edfdac20dfcffeae862
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20728ae23d447582f13da324337cbeb50d2469dba56fa2449306c3d8bdd1322935b518a51a92ca477db67959de33920f81d8106d06a75021b501d7be6d19e530
|
7
|
+
data.tar.gz: 848b93233a3010ace79c7680682638a92778326edfea34db3203d14546ae9f80ff02c0ecf86bdd787f743c40f03bebf3288b942e44b5f49e3259c80c3f1203e0
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bernard (0.
|
4
|
+
bernard (0.4.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -33,7 +33,7 @@ GEM
|
|
33
33
|
rspec-support (3.4.1)
|
34
34
|
safe_yaml (1.0.4)
|
35
35
|
slop (3.6.0)
|
36
|
-
webmock (1.24.
|
36
|
+
webmock (1.24.6)
|
37
37
|
addressable (>= 2.3.6)
|
38
38
|
crack (>= 0.3.2)
|
39
39
|
hashdiff
|
data/README.md
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
Sends event data to visualisation services.
|
4
4
|
|
5
|
+
Currently supporting:
|
6
|
+
- Keen.io
|
7
|
+
|
5
8
|

|
6
9
|
|
7
10
|
|
@@ -9,7 +12,7 @@ Sends event data to visualisation services.
|
|
9
12
|
|
10
13
|
Add this line to your application's Gemfile:
|
11
14
|
```ruby
|
12
|
-
gem 'bernard', '~> 0.
|
15
|
+
gem 'bernard', '~> 0.4.0'
|
13
16
|
```
|
14
17
|
|
15
18
|
And then execute:
|
@@ -17,7 +20,7 @@ And then execute:
|
|
17
20
|
$ bundle
|
18
21
|
```
|
19
22
|
|
20
|
-
##
|
23
|
+
## Basic setup
|
21
24
|
To use Bernard you can either create an initializer or construct it as you need it.
|
22
25
|
|
23
26
|
Create a new initializer `config/bernard.rb` in your application
|
@@ -25,6 +28,7 @@ Create a new initializer `config/bernard.rb` in your application
|
|
25
28
|
Bernard::Keen::Client.configure do |client|
|
26
29
|
client.config = {
|
27
30
|
uri: URI('https://api.keen.io'),
|
31
|
+
application_name: '<YOUR APPLICATION NAME>',
|
28
32
|
project_id: '<YOUR PROJECT ID>',
|
29
33
|
write_key: '<YOUR WRITE KEY>',
|
30
34
|
read_key: '<YOUR READ KEY>'
|
@@ -32,18 +36,6 @@ Bernard::Keen::Client.configure do |client|
|
|
32
36
|
end
|
33
37
|
```
|
34
38
|
|
35
|
-
OR
|
36
|
-
|
37
|
-
Create a new client on the fly:
|
38
|
-
```ruby
|
39
|
-
client = Bernard::Keen::Client.new(
|
40
|
-
uri: URI('https://api.keen.io')
|
41
|
-
project_id: '<YOUR PROJECT ID>'
|
42
|
-
write_key: '<YOUR WRITE KEY>'
|
43
|
-
ready_key: '<YOUR READ KEY>'
|
44
|
-
)
|
45
|
-
```
|
46
|
-
|
47
39
|
## Usage
|
48
40
|
|
49
41
|
### Tick
|
@@ -67,6 +59,53 @@ Update an event to a new value.
|
|
67
59
|
client.gauge('office_noise_level', '43')
|
68
60
|
```
|
69
61
|
|
62
|
+
---
|
63
|
+
|
64
|
+
## Advanced configuration
|
65
|
+
|
66
|
+
### Easier way to make a client
|
67
|
+
Instead of using an initializer you could create a new client on the fly:
|
68
|
+
```ruby
|
69
|
+
client = Bernard::Keen::Client.new(
|
70
|
+
uri: URI('https://api.keen.io')
|
71
|
+
application_name: '<YOUR APPLICATION NAME>'
|
72
|
+
project_id: '<YOUR PROJECT ID>'
|
73
|
+
write_key: '<YOUR WRITE KEY>'
|
74
|
+
ready_key: '<YOUR READ KEY>'
|
75
|
+
)
|
76
|
+
```
|
77
|
+
|
78
|
+
### Run asynchronously
|
79
|
+
|
80
|
+
Given that this Gem is making HTTP requests which can be slow, we'd advise using
|
81
|
+
a worker like [Sidekiq](https://github.com/mperham/sidekiq).
|
82
|
+
|
83
|
+
For example adding this to your applications's `workers/bernard_worker.rb` file:
|
84
|
+
```ruby
|
85
|
+
require 'bernard'
|
86
|
+
|
87
|
+
class BernardWorker
|
88
|
+
include Sidekiq::Worker
|
89
|
+
|
90
|
+
def perform(event_type, event_name, value = 0)
|
91
|
+
case event_type.to_sym
|
92
|
+
when :tick then Bernard::Keen::Client.new.tick(event_name)
|
93
|
+
when :count then Bernard::Keen::Client.new.count(event_name, value)
|
94
|
+
when :gauge then Bernard::Keen::Client.new.gauge(event_name, value)
|
95
|
+
else
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
```
|
100
|
+
|
101
|
+
and invoke using this worker instead to ensure it doesn't interrupt your application's processes:
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
BernardWorker.perform_async(:tick, :vote)
|
105
|
+
BernardWorker.perform_async(:count, :visitors, 3)
|
106
|
+
BernardWorker.perform_async(:gauge, :temperature, 32.5)
|
107
|
+
```
|
108
|
+
|
70
109
|
## License
|
71
110
|
|
72
111
|
(c) 2016 The Dextrous Web Ltd. Released under the MIT license.
|
data/lib/bernard/keen/client.rb
CHANGED
@@ -14,6 +14,7 @@ module Bernard
|
|
14
14
|
def config=(args)
|
15
15
|
@config = {
|
16
16
|
uri: args[:uri],
|
17
|
+
application_name: args[:application_name],
|
17
18
|
project_id: args[:project_id],
|
18
19
|
write_key: args[:write_key],
|
19
20
|
read_key: args[:read_key]
|
@@ -23,12 +24,13 @@ module Bernard
|
|
23
24
|
|
24
25
|
include Bernard::Keen::Methods
|
25
26
|
|
26
|
-
attr_reader :uri, :project_id, :write_key, :read_key
|
27
|
+
attr_reader :uri, :application_name, :project_id, :write_key, :read_key
|
27
28
|
|
28
29
|
def initialize(args = {})
|
29
30
|
config = config_from(args)
|
30
31
|
|
31
32
|
@uri = config.fetch(:uri, nil)
|
33
|
+
@application_name = config.fetch(:application_name, nil)
|
32
34
|
@project_id = config.fetch(:project_id, nil)
|
33
35
|
@write_key = config.fetch(:write_key, nil)
|
34
36
|
@read_key = config.fetch(:read_key, nil)
|
@@ -50,6 +52,11 @@ module Bernard
|
|
50
52
|
@uri = value
|
51
53
|
end
|
52
54
|
|
55
|
+
def application_name=(value)
|
56
|
+
raise(Bernard::ArgumentError, 'Missing application_name') unless value
|
57
|
+
@application_name = value
|
58
|
+
end
|
59
|
+
|
53
60
|
def project_id=(value)
|
54
61
|
raise(Bernard::ArgumentError, 'Missing project_id') unless value
|
55
62
|
@project_id = value
|
data/lib/bernard/keen/methods.rb
CHANGED
@@ -14,14 +14,14 @@ module Bernard
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def write(event, metadata)
|
17
|
-
|
18
17
|
event = String(event).strip.downcase
|
18
|
+
payload = metadata.merge!(default_params).to_json
|
19
19
|
uri.path = "/3.0/projects/#{project_id}/events/#{event}"
|
20
20
|
|
21
21
|
request = Net::HTTP::Post.new(uri.path)
|
22
22
|
request['Authorization'] = write_key
|
23
23
|
request['Content-Type'] = 'application/json'
|
24
|
-
request.body =
|
24
|
+
request.body = payload
|
25
25
|
|
26
26
|
begin
|
27
27
|
connection = Bernard::Connection.new(uri).call
|
@@ -30,6 +30,12 @@ module Bernard
|
|
30
30
|
return false
|
31
31
|
end
|
32
32
|
end
|
33
|
+
|
34
|
+
private def default_params
|
35
|
+
{
|
36
|
+
application_name: application_name
|
37
|
+
}
|
38
|
+
end
|
33
39
|
end
|
34
40
|
end
|
35
41
|
end
|
data/lib/bernard/version.rb
CHANGED