eotb 0.5.2 → 0.5.3
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.
- data/Gemfile.lock +22 -0
- data/README.rdoc +2 -1
- data/VERSION +1 -1
- data/eotb.gemspec +3 -2
- data/lib/eotb.rb +23 -12
- data/spec/eotb_spec.rb +31 -9
- metadata +5 -4
data/Gemfile.lock
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
gemcutter (0.6.1)
|
5
|
+
git (1.2.5)
|
6
|
+
jeweler (1.4.0)
|
7
|
+
gemcutter (>= 0.1.0)
|
8
|
+
git (>= 1.2.5)
|
9
|
+
rubyforge (>= 2.0.0)
|
10
|
+
json (1.4.6)
|
11
|
+
json_pure (1.4.6)
|
12
|
+
rspec (1.3.0)
|
13
|
+
rubyforge (2.0.4)
|
14
|
+
json_pure (>= 1.1.7)
|
15
|
+
|
16
|
+
PLATFORMS
|
17
|
+
ruby
|
18
|
+
|
19
|
+
DEPENDENCIES
|
20
|
+
jeweler (>= 1.4.0)
|
21
|
+
json (>= 1.4.3)
|
22
|
+
rspec (>= 1.3.0)
|
data/README.rdoc
CHANGED
@@ -39,7 +39,8 @@ As a result you will get API Key of your application.
|
|
39
39
|
Add file <tt>eotb.rb</tt> in directory <tt>config/initializers</tt> of your rails application with content:
|
40
40
|
|
41
41
|
require 'Eotb'
|
42
|
-
Eotb.configure("your_api_key", "host", "port") # default host and port are 127.0.0.1 and 3000
|
42
|
+
Eotb.configure("your_api_key", "events", "host", "port") # default host and port are 127.0.0.1 and 3000
|
43
|
+
#events - number of events sent in one package/request to beholder, default 1.
|
43
44
|
|
44
45
|
Register events by:
|
45
46
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.3
|
data/eotb.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{eotb}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ragnarson"]
|
12
|
-
s.date = %q{2010-08-
|
12
|
+
s.date = %q{2010-08-30}
|
13
13
|
s.description = %q{Rails plugin which allow you easily track and observe your apps}
|
14
14
|
s.email = %q{bartlomiej.kozal@ragnarson.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
".document",
|
21
21
|
".gitignore",
|
22
22
|
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
23
24
|
"LICENSE",
|
24
25
|
"README.rdoc",
|
25
26
|
"Rakefile",
|
data/lib/eotb.rb
CHANGED
@@ -8,22 +8,33 @@ class Eotb
|
|
8
8
|
|
9
9
|
METHODS = [:to_actor, :to_subject, :to_json, :to_hash, :inspect]
|
10
10
|
|
11
|
-
def self.configure(api_key, host = '127.0.0.1', port = '3000')
|
11
|
+
def self.configure(api_key, events = 1, host = '127.0.0.1', port = '3000')
|
12
12
|
@@uri = URI.parse('http://' + host + ':' + port + '/events/' + api_key)
|
13
13
|
@@post = Net::HTTP::Post.new(@@uri.path)
|
14
|
+
@@events = {}
|
15
|
+
@@counter = 1
|
16
|
+
events >= 1 ? @@reset = events : @@reset = 1
|
14
17
|
end
|
18
|
+
|
15
19
|
|
16
20
|
def self.register_event(actor, action, subject = {})
|
17
|
-
action = { "event[action]" => action.to_s }
|
21
|
+
action = { "event#{@@counter}[action]" => action.to_s }
|
18
22
|
event = (hash_format(actor, :actor)).merge(action).merge(hash_format(subject, :subject))
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
|
24
|
+
@@events.merge! event
|
25
|
+
if (@@counter == @@reset)
|
26
|
+
@@post.set_form_data(@@events)
|
27
|
+
@@counter = 1
|
28
|
+
begin
|
29
|
+
Timeout::timeout(2) {
|
30
|
+
Net::HTTP.new(@@uri.host, @@uri.port).start.request(@@post)
|
31
|
+
}
|
32
|
+
rescue => e
|
33
|
+
logger = Logger.new("log/#{ENV['RAILS_ENV']}.log")
|
34
|
+
logger.error "ERROR eotb gem: " + e.to_s
|
35
|
+
end
|
36
|
+
else
|
37
|
+
@@counter += 1
|
27
38
|
end
|
28
39
|
end
|
29
40
|
|
@@ -49,10 +60,10 @@ class Eotb
|
|
49
60
|
if hash.is_a?(Hash)
|
50
61
|
h = hash_flatten(hash).map do |k, v|
|
51
62
|
key = k.map{ |e| "[#{e}]" }.join
|
52
|
-
"\"event[#{type}]#{key}\" => #{value_format(v)}"
|
63
|
+
"\"event#{@@counter}[#{type}]#{key}\" => #{value_format(v)}"
|
53
64
|
end.join(', ')
|
54
65
|
else
|
55
|
-
h = "\"event[#{type}]\" => #{value_format(hash)}"
|
66
|
+
h = "\"event#{@@counter}[#{type}]\" => #{value_format(hash)}"
|
56
67
|
end
|
57
68
|
eval "{#{h.to_s}}"
|
58
69
|
end
|
data/spec/eotb_spec.rb
CHANGED
@@ -2,18 +2,28 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
describe Eotb do
|
4
4
|
|
5
|
+
it "should log errors" do
|
6
|
+
logger = mock(Logger)
|
7
|
+
logger.stub(:new) { logger }
|
8
|
+
logger.stub(:error) { @response }
|
9
|
+
Eotb.register_event(:actor, :action, {:username => "John"}).should == @response
|
10
|
+
end
|
11
|
+
|
5
12
|
describe "shoud format objects" do
|
13
|
+
before do
|
14
|
+
@@counter = 0
|
15
|
+
end
|
6
16
|
|
7
17
|
it "should format actor in string" do
|
8
|
-
Eotb.hash_format("actor", :actor).should == {"
|
18
|
+
Eotb.hash_format("actor", :actor).should == {"event0[actor]" => "actor"}
|
9
19
|
end
|
10
20
|
|
11
21
|
it "should format actor in hash" do
|
12
|
-
Eotb.hash_format({:type => "User"}, :actor).should == {"
|
22
|
+
Eotb.hash_format({:type => "User"}, :actor).should == {"event0[actor][type]" => "User"}
|
13
23
|
end
|
14
24
|
|
15
25
|
it "should format actor in nested hash" do
|
16
|
-
Eotb.hash_format({:type => { :account => "User"}}, :actor).should == {"
|
26
|
+
Eotb.hash_format({:type => { :account => "User"}}, :actor).should == {"event0[actor][type][account]" => "User"}
|
17
27
|
end
|
18
28
|
|
19
29
|
end
|
@@ -22,7 +32,7 @@ describe Eotb do
|
|
22
32
|
|
23
33
|
before(:each) do
|
24
34
|
@response = "200"
|
25
|
-
Eotb.configure("0"*40)
|
35
|
+
Eotb.configure("0"*40, 1)
|
26
36
|
Net::HTTP.stub(:new) { Net::HTTP }
|
27
37
|
Net::HTTP.stub(:start) { Net::HTTP }
|
28
38
|
Net::HTTP.stub(:request) { "200" }
|
@@ -30,6 +40,7 @@ describe Eotb do
|
|
30
40
|
|
31
41
|
it "should register two arguments" do
|
32
42
|
Eotb.register_event("actor", "action").should == @response
|
43
|
+
Eotb.register_event("act2or", "acti2on").should == @response
|
33
44
|
end
|
34
45
|
|
35
46
|
it "should register three arguments" do
|
@@ -55,13 +66,24 @@ describe Eotb do
|
|
55
66
|
it "should register arrays" do
|
56
67
|
Eotb.register_event([2,3,4], :action, {:username => ["John", "Josh"]}).should == @response
|
57
68
|
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "should register data in one package" do
|
58
73
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
74
|
+
before(:each) do
|
75
|
+
@response = "200"
|
76
|
+
Eotb.configure("0"*40, 5)
|
77
|
+
Net::HTTP.stub(:new) { Net::HTTP }
|
78
|
+
Net::HTTP.stub(:start) { Net::HTTP }
|
79
|
+
Net::HTTP.stub(:request) { "200" }
|
80
|
+
end
|
81
|
+
|
82
|
+
it "when registering 5 events" do
|
83
|
+
4.times {Eotb.register_event("actor", "action", {:username => "John"})}
|
84
|
+
Eotb.register_event("actor", "action", {:username => "John"}).should == @response
|
64
85
|
end
|
86
|
+
|
65
87
|
|
66
88
|
end
|
67
89
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eotb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 3
|
10
|
+
version: 0.5.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ragnarson
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-30 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- .document
|
96
96
|
- .gitignore
|
97
97
|
- Gemfile
|
98
|
+
- Gemfile.lock
|
98
99
|
- LICENSE
|
99
100
|
- README.rdoc
|
100
101
|
- Rakefile
|