fozzie 0.0.27 → 1.0.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.
- data/.gitignore +2 -1
- data/Guardfile +2 -2
- data/README.md +22 -11
- data/Rakefile +1 -1
- data/fozzie.gemspec +8 -14
- data/lib/core_ext/module/monitor.rb +4 -3
- data/lib/fozzie.rb +6 -7
- data/lib/fozzie/adapter.rb +1 -0
- data/lib/fozzie/adapter/statsd.rb +86 -0
- data/lib/fozzie/bulk_dsl.rb +28 -0
- data/lib/fozzie/configuration.rb +32 -13
- data/lib/fozzie/dsl.rb +19 -0
- data/lib/fozzie/exception.rb +5 -0
- data/lib/fozzie/interface.rb +30 -15
- data/lib/fozzie/rack/middleware.rb +3 -1
- data/lib/fozzie/sniff.rb +28 -33
- data/lib/fozzie/version.rb +1 -1
- data/spec/config/fozzie.yml +2 -1
- data/spec/lib/core_ext/module/monitor_spec.rb +9 -0
- data/spec/lib/fozzie/adapter/statsd_spec.rb +82 -0
- data/spec/lib/fozzie/bulk_dsl_spec.rb +47 -0
- data/spec/lib/fozzie/configuration_spec.rb +34 -20
- data/spec/lib/fozzie/dsl_spec.rb +16 -0
- data/spec/lib/fozzie/rack/middleware_spec.rb +6 -36
- data/spec/lib/fozzie/rack/sinatra_spec.rb +31 -0
- data/spec/lib/fozzie/sniff_spec.rb +37 -37
- data/spec/lib/fozzie/version_spec.rb +1 -1
- data/spec/lib/fozzie_spec.rb +19 -3
- data/spec/shared_examples/fozzie_adapter.rb +7 -0
- data/spec/shared_examples/interface.rb +160 -0
- data/spec/spec_helper.rb +20 -10
- metadata +31 -74
- data/lib/core_ext/hash.rb +0 -16
- data/lib/fozzie/mill.rb +0 -50
- data/lib/fozzie/rails/engine.rb +0 -15
- data/lib/fozzie/rails/middleware.rb +0 -39
- data/lib/fozzie/railtie.rb +0 -15
- data/lib/fozzie/socket.rb +0 -53
- data/spec/lib/core_ext/hash_spec.rb +0 -33
- data/spec/lib/fozzie/interface_spec.rb +0 -180
- data/spec/lib/fozzie/mill_spec.rb +0 -43
- data/spec/lib/fozzie/rails/middleware_spec.rb +0 -125
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'fozzie/rack/middleware'
|
2
|
+
require 'sinatra/base'
|
3
|
+
require 'rack/test'
|
4
|
+
|
5
|
+
describe "Sinatra Server with Middleware" do
|
6
|
+
include Rack::Test::Methods
|
7
|
+
|
8
|
+
def app
|
9
|
+
Sinatra.new do
|
10
|
+
set :environment, :test
|
11
|
+
use Fozzie::Rack::Middleware
|
12
|
+
get('/') { "echo" }
|
13
|
+
get('/somewhere/nice') { "echo" }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it "sends stats request on root" do
|
18
|
+
S.should_receive(:timing).with('index.render', anything, anything)
|
19
|
+
get '/'
|
20
|
+
last_response.should be_ok
|
21
|
+
last_response.body.should == 'echo'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "sends stats request on nested path" do
|
25
|
+
S.should_receive(:timing).with('somewhere.nice.render', anything, anything)
|
26
|
+
|
27
|
+
get '/somewhere/nice'
|
28
|
+
last_response.should be_ok
|
29
|
+
last_response.body.should == 'echo'
|
30
|
+
end
|
31
|
+
end
|
@@ -13,9 +13,15 @@ describe Fozzie::Sniff do
|
|
13
13
|
|
14
14
|
def self.badger; :cares end
|
15
15
|
|
16
|
+
_monitor("my.awesome.class.bucket.name")
|
17
|
+
def self.class_method_with_non_default_bucket_name; true; end
|
18
|
+
|
16
19
|
_monitor
|
17
|
-
def foo; :foo end
|
20
|
+
def foo; :foo; end
|
18
21
|
|
22
|
+
_monitor("my.awesome.bucket.name")
|
23
|
+
def method_with_non_default_bucket_name; true; end
|
24
|
+
|
19
25
|
_monitor
|
20
26
|
def sloth(a, b, c); [a,b,c] end
|
21
27
|
|
@@ -30,34 +36,23 @@ describe Fozzie::Sniff do
|
|
30
36
|
def self.class_method_yielding_to_block
|
31
37
|
yield(:retval_from_block) if block_given?
|
32
38
|
end
|
33
|
-
|
34
|
-
self
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
context "environments" do
|
40
|
-
subject { klass }
|
41
|
-
|
42
|
-
it "is disabled in test" do
|
43
|
-
Fozzie.c.stubs(:env).returns('test')
|
44
|
-
S.expects(:time_for).with(['foo_bar', 'bar!']).never
|
45
|
-
|
46
|
-
subject.bar!
|
47
39
|
end
|
48
40
|
|
49
|
-
|
50
|
-
|
51
|
-
S.expects(:time_for).with(['foo_bar', 'bar!'])
|
41
|
+
FooBar
|
42
|
+
end
|
52
43
|
|
53
|
-
|
54
|
-
|
44
|
+
# Turn on sniffing for the duration of this spec
|
45
|
+
before(:all) do
|
46
|
+
Fozzie.c.sniff_envs << :test
|
47
|
+
end
|
55
48
|
|
49
|
+
after(:all) do
|
50
|
+
Fozzie.c.sniff_envs.delete(:test)
|
56
51
|
end
|
57
52
|
|
58
53
|
context 'class methods' do
|
59
54
|
subject { klass }
|
60
|
-
|
55
|
+
|
61
56
|
it "aliases methods for monitoring" do
|
62
57
|
subject.methods.grep(/bar/).should =~ [:bar!, :"bar_with_monitor!", :"bar_without_monitor!"]
|
63
58
|
end
|
@@ -67,7 +62,7 @@ describe Fozzie::Sniff do
|
|
67
62
|
end
|
68
63
|
|
69
64
|
it "utilises Fozzie" do
|
70
|
-
S.
|
65
|
+
S.should_receive(:time_for).with(['foo_bar', 'bar!'])
|
71
66
|
|
72
67
|
subject.bar!
|
73
68
|
end
|
@@ -78,23 +73,26 @@ describe Fozzie::Sniff do
|
|
78
73
|
end
|
79
74
|
|
80
75
|
it "does not monitor when mapped" do
|
81
|
-
S.
|
76
|
+
S.should_receive(:time_for).with(['foo_bar', 'badger']).never
|
82
77
|
|
83
78
|
subject.badger.should eq :cares
|
84
79
|
end
|
85
80
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end.should eq :retval_from_block
|
81
|
+
it "optionally sets the bucket name" do
|
82
|
+
S.should_receive(:time_for).with("my.awesome.class.bucket.name")
|
83
|
+
|
84
|
+
subject.class_method_with_non_default_bucket_name
|
91
85
|
end
|
92
86
|
|
87
|
+
|
88
|
+
it "yields to a block when given" do
|
89
|
+
subject.class_method_yielding_to_block {|val| val }.should eq :retval_from_block
|
90
|
+
end
|
93
91
|
end
|
94
92
|
|
95
93
|
context 'instance methods' do
|
96
|
-
subject {
|
97
|
-
|
94
|
+
subject { klass.new }
|
95
|
+
|
98
96
|
it "aliases methods for monitoring" do
|
99
97
|
subject.methods.grep(/foo/).should =~ [:foo, :foo_with_monitor, :foo_without_monitor]
|
100
98
|
end
|
@@ -104,28 +102,30 @@ describe Fozzie::Sniff do
|
|
104
102
|
end
|
105
103
|
|
106
104
|
it "utilises Fozzie" do
|
107
|
-
S.
|
105
|
+
S.should_receive(:time_for).with(['foo_bar', 'foo'])
|
108
106
|
|
109
107
|
subject.foo
|
110
108
|
end
|
111
109
|
|
110
|
+
it "optionally sets the bucket name" do
|
111
|
+
S.should_receive(:time_for).with("my.awesome.bucket.name")
|
112
|
+
|
113
|
+
subject.method_with_non_default_bucket_name
|
114
|
+
end
|
115
|
+
|
112
116
|
it "handles arguments" do
|
113
117
|
a = [:slow, :slower, :slowest]
|
114
118
|
subject.sloth(*a).should eq a
|
115
119
|
end
|
116
120
|
|
117
121
|
it "does not monitor when mapped" do
|
118
|
-
S.
|
122
|
+
S.should_receive(:time_for).with(['foo_bar', 'honeybadger']).never
|
119
123
|
|
120
124
|
subject.honeybadger.should eq :dontcare
|
121
125
|
end
|
122
126
|
|
123
127
|
it "yields to a block when given" do
|
124
|
-
subject.method_yielding_to_block
|
125
|
-
value_from_block
|
126
|
-
end.should eq :retval_from_block
|
128
|
+
subject.method_yielding_to_block {|val| val }.should eq :retval_from_block
|
127
129
|
end
|
128
|
-
|
129
130
|
end
|
130
|
-
|
131
131
|
end
|
data/spec/lib/fozzie_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'logger'
|
2
3
|
|
3
4
|
describe Fozzie do
|
4
|
-
|
5
5
|
it "allows dynamic assignment" do
|
6
6
|
{ :host => 'somewhere.local', :port => 99 }.each do |field, val|
|
7
7
|
Fozzie.configure {|c| c.send("#{field}=", val) }
|
@@ -9,6 +9,23 @@ describe Fozzie do
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
describe ".logger" do
|
13
|
+
let(:logger) { double "logger" }
|
14
|
+
|
15
|
+
before do
|
16
|
+
@old_logger = Fozzie.logger
|
17
|
+
end
|
18
|
+
|
19
|
+
it "assigns a logger" do
|
20
|
+
Fozzie.logger = logger
|
21
|
+
Fozzie.logger.should eq logger
|
22
|
+
end
|
23
|
+
|
24
|
+
after do
|
25
|
+
Fozzie.logger = @old_logger
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
12
29
|
it "has configuration" do
|
13
30
|
Fozzie.config.should be_kind_of(Fozzie::Configuration)
|
14
31
|
Fozzie.c.should be_kind_of(Fozzie::Configuration)
|
@@ -19,5 +36,4 @@ describe Fozzie do
|
|
19
36
|
Kernel.const_defined?(k).should == true
|
20
37
|
end
|
21
38
|
end
|
22
|
-
|
23
|
-
end
|
39
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
shared_examples "interface" do
|
2
|
+
|
3
|
+
it "#increment" do
|
4
|
+
subject.should_receive(:send).with('wat', 1, :count, 1)
|
5
|
+
subject.increment 'wat'
|
6
|
+
end
|
7
|
+
|
8
|
+
it "#decrement" do
|
9
|
+
subject.should_receive(:send).with('wat', -1, :count, 1)
|
10
|
+
subject.decrement 'wat'
|
11
|
+
end
|
12
|
+
|
13
|
+
it "#count" do
|
14
|
+
subject.should_receive(:send).with('wat', 5, :count, 1)
|
15
|
+
subject.count 'wat', 5
|
16
|
+
end
|
17
|
+
|
18
|
+
it "#timing" do
|
19
|
+
subject.should_receive(:send).with('wat', 500, :timing, 1)
|
20
|
+
subject.timing 'wat', 500
|
21
|
+
end
|
22
|
+
|
23
|
+
it "times a given block" do
|
24
|
+
subject.should_receive(:timing).with do |b, val, timing|
|
25
|
+
b == 'data.bin' && (1..11).include?(val)
|
26
|
+
end.exactly(3).times
|
27
|
+
|
28
|
+
subject.time_for('data.bin') { sleep 0.01 }
|
29
|
+
subject.time_to_do('data.bin') { sleep 0.01 }
|
30
|
+
subject.time('data.bin') { sleep 0.01 }
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "event" do
|
34
|
+
it "for a commit" do
|
35
|
+
subject.should_receive(:gauge).with(['event', 'commit', nil], anything).twice
|
36
|
+
subject.commit
|
37
|
+
subject.committed
|
38
|
+
end
|
39
|
+
|
40
|
+
it "for a build" do
|
41
|
+
subject.should_receive(:gauge).with(['event', 'build', nil], anything).twice
|
42
|
+
subject.build
|
43
|
+
subject.built
|
44
|
+
end
|
45
|
+
|
46
|
+
it "for a deploy" do
|
47
|
+
subject.should_receive(:gauge).with(['event', 'deploy', nil], anything).twice
|
48
|
+
subject.deploy
|
49
|
+
subject.deployed
|
50
|
+
end
|
51
|
+
|
52
|
+
it "for anything" do
|
53
|
+
subject.should_receive(:send).with(['event', 'foo', nil], anything, :gauge, 1)
|
54
|
+
subject.event 'foo'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "accepts an app name" do
|
58
|
+
subject.should_receive(:send).with(['event', 'foo', 'fozzie'], anything, :gauge, 1)
|
59
|
+
subject.event 'foo', 'fozzie'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "#increment_on" do
|
64
|
+
it "registers success" do
|
65
|
+
subject.should_receive(:increment).with(["event.increment", "success"], 1)
|
66
|
+
subject.increment_on('event.increment', true).should == true
|
67
|
+
end
|
68
|
+
|
69
|
+
it "registers failure" do
|
70
|
+
subject.should_receive(:increment).with(["event.increment", "fail"], 1)
|
71
|
+
subject.increment_on('event.increment', false).should == false
|
72
|
+
end
|
73
|
+
|
74
|
+
it "simply questions the passed val with if" do
|
75
|
+
a = mock
|
76
|
+
a.should_receive(:save).and_return({})
|
77
|
+
subject.should_receive(:increment).with(["event.increment", "success"], 1)
|
78
|
+
subject.increment_on('event.increment', a.save).should == {}
|
79
|
+
end
|
80
|
+
|
81
|
+
it "registers fail on nil return" do
|
82
|
+
a = mock
|
83
|
+
a.should_receive(:save).and_return(nil)
|
84
|
+
subject.should_receive(:increment).with(["event.increment", "fail"], 1)
|
85
|
+
subject.increment_on('event.increment', a.save).should == nil
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "performing actions" do
|
89
|
+
it "registers success" do
|
90
|
+
a = mock
|
91
|
+
a.should_receive(:save).and_return(true)
|
92
|
+
subject.should_receive(:increment).with(["event.increment", "success"], 1)
|
93
|
+
subject.increment_on('event.increment', a.save).should == true
|
94
|
+
end
|
95
|
+
|
96
|
+
it "registers failure" do
|
97
|
+
a = mock
|
98
|
+
a.should_receive(:save).and_return(false)
|
99
|
+
subject.should_receive(:increment).with(["event.increment", "fail"], 1)
|
100
|
+
subject.increment_on('event.increment', a.save).should == false
|
101
|
+
end
|
102
|
+
|
103
|
+
it "registers positive even when nested" do
|
104
|
+
a = mock
|
105
|
+
a.should_receive(:save).and_return(true)
|
106
|
+
subject.should_receive(:timing).with('event.run', anything, anything)
|
107
|
+
subject.should_receive(:increment).with(["event.increment", "success"], 1)
|
108
|
+
|
109
|
+
res = subject.time_to_do "event.run" do
|
110
|
+
subject.increment_on('event.increment', a.save)
|
111
|
+
end
|
112
|
+
res.should == true
|
113
|
+
end
|
114
|
+
|
115
|
+
it "registers negative even when nested" do
|
116
|
+
a = mock
|
117
|
+
a.should_receive(:save).and_return(false)
|
118
|
+
subject.should_receive(:timing).with('event.run', anything, anything)
|
119
|
+
subject.should_receive(:increment).with(["event.increment", "fail"], 1)
|
120
|
+
|
121
|
+
res = subject.time_to_do "event.run" do
|
122
|
+
subject.increment_on('event.increment', a.save)
|
123
|
+
end
|
124
|
+
res.should == false
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "#bulk" do
|
130
|
+
|
131
|
+
it "registers statistics in a single call" do
|
132
|
+
Fozzie.c.adapter.should_receive(:register).once
|
133
|
+
|
134
|
+
subject.bulk do
|
135
|
+
increment :foo
|
136
|
+
decrement :bar
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
it "registers a gauge measurement" do
|
143
|
+
subject.should_receive(:send).with("mystat", 99, :gauge, 1)
|
144
|
+
subject.gauge("mystat", 99)
|
145
|
+
end
|
146
|
+
|
147
|
+
it "raises exception if natural exception from block" do
|
148
|
+
proc { subject.time_to_do('data.bin', 1, :gauge, 1) { raise ArgumentError, "testing" } }.should raise_error(ArgumentError)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "only calls the block once on error" do
|
152
|
+
Fozzie.c.adapter.stub(:send) { raise SocketError }
|
153
|
+
i = 0
|
154
|
+
p = proc {|n| (n + 1) }
|
155
|
+
val = subject.time_to_do('data.bin') { i+= p.call(i) }
|
156
|
+
|
157
|
+
val.should == 1
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,19 +1,29 @@
|
|
1
1
|
ENV['RACK_ENV'] ||= 'test'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
# Basic path registers
|
4
|
+
root = File.expand_path('../', File.dirname(__FILE__))
|
5
|
+
lib = File.expand_path('lib', root)
|
5
6
|
$:.unshift(root, lib)
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
RSpec.configure do |config|
|
11
|
-
config.mock_with :mocha
|
12
|
-
end
|
8
|
+
# Shared Examples
|
9
|
+
Dir[File.expand_path('spec/shared_examples/*.rb')].each {|r| require r }
|
13
10
|
|
14
11
|
require 'fozzie'
|
15
12
|
|
13
|
+
module Fozzie
|
14
|
+
class Adapter::TestAdapter
|
15
|
+
def register(*params); end
|
16
|
+
def delimeter; ""; end
|
17
|
+
def safe_separator; ""; end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
16
21
|
Fozzie.configure do |config|
|
17
|
-
config.host
|
18
|
-
config.port
|
22
|
+
config.host = '127.0.0.1'
|
23
|
+
config.port = 8809
|
24
|
+
config.adapter = "TestAdapter"
|
25
|
+
end
|
26
|
+
|
27
|
+
RSpec.configure do |config|
|
28
|
+
config.order = :random
|
19
29
|
end
|
metadata
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fozzie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Marc Watts
|
9
|
-
- Dave Nolan
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2012-
|
12
|
+
date: 2012-10-07 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: sys-uname
|
@@ -77,7 +76,7 @@ dependencies:
|
|
77
76
|
- !ruby/object:Gem::Version
|
78
77
|
version: '0'
|
79
78
|
- !ruby/object:Gem::Dependency
|
80
|
-
name:
|
79
|
+
name: guard
|
81
80
|
requirement: !ruby/object:Gem::Requirement
|
82
81
|
none: false
|
83
82
|
requirements:
|
@@ -93,7 +92,7 @@ dependencies:
|
|
93
92
|
- !ruby/object:Gem::Version
|
94
93
|
version: '0'
|
95
94
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
95
|
+
name: guard-rspec
|
97
96
|
requirement: !ruby/object:Gem::Requirement
|
98
97
|
none: false
|
99
98
|
requirements:
|
@@ -109,7 +108,7 @@ dependencies:
|
|
109
108
|
- !ruby/object:Gem::Version
|
110
109
|
version: '0'
|
111
110
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
111
|
+
name: rb-fsevent
|
113
112
|
requirement: !ruby/object:Gem::Requirement
|
114
113
|
none: false
|
115
114
|
requirements:
|
@@ -156,57 +155,9 @@ dependencies:
|
|
156
155
|
- - ! '>='
|
157
156
|
- !ruby/object:Gem::Version
|
158
157
|
version: '0'
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
none: false
|
163
|
-
requirements:
|
164
|
-
- - '='
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 2.3.14
|
167
|
-
type: :development
|
168
|
-
prerelease: false
|
169
|
-
version_requirements: !ruby/object:Gem::Requirement
|
170
|
-
none: false
|
171
|
-
requirements:
|
172
|
-
- - '='
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
version: 2.3.14
|
175
|
-
- !ruby/object:Gem::Dependency
|
176
|
-
name: guard
|
177
|
-
requirement: !ruby/object:Gem::Requirement
|
178
|
-
none: false
|
179
|
-
requirements:
|
180
|
-
- - ! '>='
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
version: '0'
|
183
|
-
type: :development
|
184
|
-
prerelease: false
|
185
|
-
version_requirements: !ruby/object:Gem::Requirement
|
186
|
-
none: false
|
187
|
-
requirements:
|
188
|
-
- - ! '>='
|
189
|
-
- !ruby/object:Gem::Version
|
190
|
-
version: '0'
|
191
|
-
- !ruby/object:Gem::Dependency
|
192
|
-
name: guard-rspec
|
193
|
-
requirement: !ruby/object:Gem::Requirement
|
194
|
-
none: false
|
195
|
-
requirements:
|
196
|
-
- - ! '>='
|
197
|
-
- !ruby/object:Gem::Version
|
198
|
-
version: '0'
|
199
|
-
type: :development
|
200
|
-
prerelease: false
|
201
|
-
version_requirements: !ruby/object:Gem::Requirement
|
202
|
-
none: false
|
203
|
-
requirements:
|
204
|
-
- - ! '>='
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version: '0'
|
207
|
-
description: ! "\n Gem to make statistics sending to Statsd from Ruby applications
|
208
|
-
simple and efficient as possible.\n Inspired by the original ruby-statsd gem
|
209
|
-
by Etsy, currently used by Lonely Planet Online.\n "
|
158
|
+
description: ! "\n Gem to make statistics sending from Ruby applications simple
|
159
|
+
and efficient as possible.\n Currently supports Statsd, and is inspired by the
|
160
|
+
original ruby-statsd gem by Etsy.\n "
|
210
161
|
email:
|
211
162
|
- marc.watts@lonelyplanet.co.uk
|
212
163
|
executables: []
|
@@ -222,31 +173,33 @@ files:
|
|
222
173
|
- Rakefile
|
223
174
|
- fozzie.gemspec
|
224
175
|
- fozzie.yml.example
|
225
|
-
- lib/core_ext/hash.rb
|
226
176
|
- lib/core_ext/module/monitor.rb
|
227
177
|
- lib/fozzie.rb
|
178
|
+
- lib/fozzie/adapter.rb
|
179
|
+
- lib/fozzie/adapter/statsd.rb
|
180
|
+
- lib/fozzie/bulk_dsl.rb
|
228
181
|
- lib/fozzie/configuration.rb
|
182
|
+
- lib/fozzie/dsl.rb
|
183
|
+
- lib/fozzie/exception.rb
|
229
184
|
- lib/fozzie/interface.rb
|
230
|
-
- lib/fozzie/mill.rb
|
231
185
|
- lib/fozzie/rack/middleware.rb
|
232
|
-
- lib/fozzie/rails/engine.rb
|
233
|
-
- lib/fozzie/rails/middleware.rb
|
234
|
-
- lib/fozzie/railtie.rb
|
235
186
|
- lib/fozzie/sniff.rb
|
236
|
-
- lib/fozzie/socket.rb
|
237
187
|
- lib/fozzie/version.rb
|
238
188
|
- resources/mill.js.example
|
239
189
|
- resources/mill.min.js.example
|
240
190
|
- spec/config/fozzie.yml
|
241
|
-
- spec/lib/core_ext/
|
191
|
+
- spec/lib/core_ext/module/monitor_spec.rb
|
192
|
+
- spec/lib/fozzie/adapter/statsd_spec.rb
|
193
|
+
- spec/lib/fozzie/bulk_dsl_spec.rb
|
242
194
|
- spec/lib/fozzie/configuration_spec.rb
|
243
|
-
- spec/lib/fozzie/
|
244
|
-
- spec/lib/fozzie/mill_spec.rb
|
195
|
+
- spec/lib/fozzie/dsl_spec.rb
|
245
196
|
- spec/lib/fozzie/rack/middleware_spec.rb
|
246
|
-
- spec/lib/fozzie/
|
197
|
+
- spec/lib/fozzie/rack/sinatra_spec.rb
|
247
198
|
- spec/lib/fozzie/sniff_spec.rb
|
248
199
|
- spec/lib/fozzie/version_spec.rb
|
249
200
|
- spec/lib/fozzie_spec.rb
|
201
|
+
- spec/shared_examples/fozzie_adapter.rb
|
202
|
+
- spec/shared_examples/interface.rb
|
250
203
|
- spec/spec_helper.rb
|
251
204
|
homepage:
|
252
205
|
licenses: []
|
@@ -262,7 +215,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
262
215
|
version: '0'
|
263
216
|
segments:
|
264
217
|
- 0
|
265
|
-
hash:
|
218
|
+
hash: 254608194485651365
|
266
219
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
220
|
none: false
|
268
221
|
requirements:
|
@@ -271,22 +224,26 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
271
224
|
version: '0'
|
272
225
|
segments:
|
273
226
|
- 0
|
274
|
-
hash:
|
227
|
+
hash: 254608194485651365
|
275
228
|
requirements: []
|
276
229
|
rubyforge_project: fozzie
|
277
230
|
rubygems_version: 1.8.24
|
278
231
|
signing_key:
|
279
232
|
specification_version: 3
|
280
|
-
summary:
|
233
|
+
summary: Ruby gem from Lonely Planet Online to register statistics. Currently supports
|
234
|
+
Statsd.
|
281
235
|
test_files:
|
282
236
|
- spec/config/fozzie.yml
|
283
|
-
- spec/lib/core_ext/
|
237
|
+
- spec/lib/core_ext/module/monitor_spec.rb
|
238
|
+
- spec/lib/fozzie/adapter/statsd_spec.rb
|
239
|
+
- spec/lib/fozzie/bulk_dsl_spec.rb
|
284
240
|
- spec/lib/fozzie/configuration_spec.rb
|
285
|
-
- spec/lib/fozzie/
|
286
|
-
- spec/lib/fozzie/mill_spec.rb
|
241
|
+
- spec/lib/fozzie/dsl_spec.rb
|
287
242
|
- spec/lib/fozzie/rack/middleware_spec.rb
|
288
|
-
- spec/lib/fozzie/
|
243
|
+
- spec/lib/fozzie/rack/sinatra_spec.rb
|
289
244
|
- spec/lib/fozzie/sniff_spec.rb
|
290
245
|
- spec/lib/fozzie/version_spec.rb
|
291
246
|
- spec/lib/fozzie_spec.rb
|
247
|
+
- spec/shared_examples/fozzie_adapter.rb
|
248
|
+
- spec/shared_examples/interface.rb
|
292
249
|
- spec/spec_helper.rb
|