fozzie 0.0.2 → 0.0.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/fozzie.gemspec +5 -7
- data/lib/core_ext/hash.rb +1 -1
- data/lib/fozzie/classes.rb +27 -11
- data/lib/fozzie/configuration.rb +9 -8
- data/lib/fozzie/version.rb +1 -1
- data/spec/lib/fozzie/configuration_spec.rb +7 -3
- data/spec/lib/fozzie_spec.rb +30 -4
- metadata +15 -26
data/fozzie.gemspec
CHANGED
@@ -16,12 +16,10 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
18
|
s.require_paths = ["lib"]
|
19
|
-
|
20
|
-
s.add_dependency 'statsd'
|
21
|
-
s.add_dependency 'bson_ext'
|
22
|
-
|
19
|
+
|
20
|
+
s.add_dependency 'statsd-ruby'
|
23
21
|
s.add_development_dependency 'rake'
|
24
|
-
s.add_development_dependency
|
25
|
-
s.add_development_dependency
|
26
|
-
s.add_development_dependency
|
22
|
+
s.add_development_dependency 'rspec'
|
23
|
+
s.add_development_dependency 'mocha'
|
24
|
+
s.add_development_dependency 'simplecov'
|
27
25
|
end
|
data/lib/core_ext/hash.rb
CHANGED
@@ -3,7 +3,7 @@ class Hash
|
|
3
3
|
# Return self as symbolized keys hash
|
4
4
|
def symbolize_keys
|
5
5
|
self.dup.inject({}) do |hsh, (k,v)|
|
6
|
-
hsh[k.to_sym] = (v.respond_to?(:symbolize_keys) ? v.symbolize_keys : v)
|
6
|
+
hsh[k.to_s.to_sym] = (v.respond_to?(:symbolize_keys) ? v.symbolize_keys : v)
|
7
7
|
hsh
|
8
8
|
end
|
9
9
|
end
|
data/lib/fozzie/classes.rb
CHANGED
@@ -3,31 +3,47 @@ require 'statsd'
|
|
3
3
|
module Fozzie
|
4
4
|
module Classes
|
5
5
|
|
6
|
-
class AbstractFozzie < Statsd
|
6
|
+
class AbstractFozzie < Statsd
|
7
7
|
attr_reader :prefix
|
8
8
|
|
9
9
|
def initialize(host, port, prefix = nil)
|
10
|
-
@
|
10
|
+
@namespace = prefix unless prefix.nil?
|
11
11
|
super host, port
|
12
12
|
end
|
13
13
|
|
14
|
-
def time_for(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
def time_to_do(stat, sample_rate=1, &block); time_for(stat, sample_rate, &block); end
|
15
|
+
def time_for(stat, sample_rate=1, &block)
|
16
|
+
begin
|
17
|
+
time(stat, sample_rate, &block)
|
18
|
+
rescue => exc
|
19
|
+
yield block
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def committed; commit; end
|
24
|
+
def commit
|
25
|
+
event :commit
|
26
|
+
end
|
27
|
+
|
28
|
+
def build; built; end
|
29
|
+
def built
|
30
|
+
event :build
|
31
|
+
end
|
32
|
+
|
33
|
+
def deploy; deployed; end
|
34
|
+
def deployed
|
35
|
+
event :deploy
|
19
36
|
end
|
20
37
|
|
21
38
|
private
|
22
39
|
|
23
|
-
|
24
|
-
|
25
|
-
super "#{@prefix}#{data}", sample_rate
|
40
|
+
def event(type)
|
41
|
+
timing "event.#{type.to_s}", Time.now.usec
|
26
42
|
end
|
27
43
|
|
28
44
|
end
|
29
45
|
|
30
|
-
NAMESPACES = %w{Stats S}
|
46
|
+
NAMESPACES = %w{Stats S Statistics Warehouse}
|
31
47
|
|
32
48
|
def self.included(klass)
|
33
49
|
host, port, prefix = Fozzie.c.host, Fozzie.c.port, Fozzie.c.data_prefix
|
data/lib/fozzie/configuration.rb
CHANGED
@@ -13,10 +13,10 @@ module Fozzie
|
|
13
13
|
|
14
14
|
self
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
def data_prefix
|
18
|
-
s =
|
19
|
-
s = appname
|
18
|
+
s = env
|
19
|
+
s = [appname, s].join('.').strip unless appname.nil? || appname.empty?
|
20
20
|
s
|
21
21
|
end
|
22
22
|
|
@@ -36,10 +36,10 @@ module Fozzie
|
|
36
36
|
# Default configuration settings
|
37
37
|
# @return [Hash]
|
38
38
|
def self.default_configuration
|
39
|
-
{
|
40
|
-
:host => '127.0.0.1',
|
41
|
-
:port => 8125,
|
42
|
-
:config_path => '',
|
39
|
+
{
|
40
|
+
:host => '127.0.0.1',
|
41
|
+
:port => 8125,
|
42
|
+
:config_path => '',
|
43
43
|
:env => (ENV['RAILS_ENV'] || 'development'),
|
44
44
|
:appname => ''
|
45
45
|
}.dup
|
@@ -52,7 +52,8 @@ module Fozzie
|
|
52
52
|
def config_from_yaml(args)
|
53
53
|
fp = full_config_path(args[:config_path])
|
54
54
|
return {} unless File.exists?(fp)
|
55
|
-
YAML.load(File.open(fp))[args[:env]]
|
55
|
+
cnf = YAML.load(File.open(fp))[args[:env]]
|
56
|
+
(cnf.kind_of?(Hash)) ? cnf.symbolize_keys : {}
|
56
57
|
end
|
57
58
|
|
58
59
|
end
|
data/lib/fozzie/version.rb
CHANGED
@@ -15,7 +15,7 @@ describe Fozzie::Configuration do
|
|
15
15
|
c.host.should == '1.1.1.1'
|
16
16
|
c.port.should == 9876
|
17
17
|
c.appname.should == 'fozzie'
|
18
|
-
c.data_prefix.should == 'fozzie.test
|
18
|
+
c.data_prefix.should == 'fozzie.test'
|
19
19
|
end
|
20
20
|
|
21
21
|
it "defaults env" do
|
@@ -23,12 +23,16 @@ describe Fozzie::Configuration do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
it "creates a data prefix" do
|
26
|
-
subject.data_prefix.should == 'development
|
26
|
+
subject.data_prefix.should == 'development'
|
27
27
|
end
|
28
28
|
|
29
29
|
it "creates a data prefix with appname when set" do
|
30
30
|
subject.appname = 'astoria'
|
31
|
-
subject.data_prefix.should == 'astoria.development
|
31
|
+
subject.data_prefix.should == 'astoria.development'
|
32
|
+
end
|
33
|
+
|
34
|
+
it "handles missing configuration namespace" do
|
35
|
+
proc { Fozzie::Configuration.new({:env => 'blbala', :config_path => 'spec/'}) }.should_not raise_error
|
32
36
|
end
|
33
37
|
|
34
38
|
end
|
data/spec/lib/fozzie_spec.rb
CHANGED
@@ -23,7 +23,8 @@ describe Fozzie do
|
|
23
23
|
kl.should respond_to(:increment)
|
24
24
|
kl.should respond_to(:decrement)
|
25
25
|
kl.should respond_to(:timing)
|
26
|
-
kl.should respond_to(:
|
26
|
+
kl.should respond_to(:count)
|
27
|
+
kl.should respond_to(:time)
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
@@ -34,13 +35,38 @@ describe Fozzie do
|
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
37
|
-
it "assigns
|
38
|
-
Fozzie::AbstractFozzie.new(1,2, 'a').
|
38
|
+
it "assigns namespace when passed" do
|
39
|
+
Fozzie::AbstractFozzie.new(1,2, 'a').namespace.should == 'a'
|
39
40
|
end
|
40
41
|
|
41
42
|
it "times a given block" do
|
42
|
-
Stats.expects(:timing).with() {|b, val| b == 'data.bin' && (
|
43
|
+
Stats.expects(:timing).with() {|b, val, timing| b == 'data.bin' && (1000..1200).include?(val) }.twice
|
43
44
|
Stats.time_for('data.bin') { sleep 1 }
|
45
|
+
Stats.time_to_do('data.bin') { sleep 1 }
|
46
|
+
end
|
47
|
+
|
48
|
+
it "registers a commit" do
|
49
|
+
Stats.expects(:timing).with('event.commit', anything).twice
|
50
|
+
Stats.commit
|
51
|
+
Stats.committed
|
52
|
+
end
|
53
|
+
|
54
|
+
it "registers a build" do
|
55
|
+
Stats.expects(:timing).with('event.build', anything).twice
|
56
|
+
Stats.build
|
57
|
+
Stats.built
|
58
|
+
end
|
59
|
+
|
60
|
+
it "registers a deploy" do
|
61
|
+
Stats.expects(:timing).with('event.deploy', anything).twice
|
62
|
+
Stats.deploy
|
63
|
+
Stats.deployed
|
64
|
+
end
|
65
|
+
|
66
|
+
it "ignores exception and yields block" do
|
67
|
+
Stats.stubs(:time).raises(ArgumentError)
|
68
|
+
proc { Stats.time_for('data.bin') { sleep 1 } }.should_not raise_error
|
69
|
+
proc { Stats.time_to_do('data.bin') { sleep 1 } }.should_not raise_error
|
44
70
|
end
|
45
71
|
|
46
72
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fozzie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name: statsd
|
16
|
-
requirement: &
|
15
|
+
name: statsd-ruby
|
16
|
+
requirement: &70261680612280 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,21 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: bson_ext
|
27
|
-
requirement: &70188658675220 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ! '>='
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
33
|
-
type: :runtime
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70188658675220
|
24
|
+
version_requirements: *70261680612280
|
36
25
|
- !ruby/object:Gem::Dependency
|
37
26
|
name: rake
|
38
|
-
requirement: &
|
27
|
+
requirement: &70261680611680 !ruby/object:Gem::Requirement
|
39
28
|
none: false
|
40
29
|
requirements:
|
41
30
|
- - ! '>='
|
@@ -43,10 +32,10 @@ dependencies:
|
|
43
32
|
version: '0'
|
44
33
|
type: :development
|
45
34
|
prerelease: false
|
46
|
-
version_requirements: *
|
35
|
+
version_requirements: *70261680611680
|
47
36
|
- !ruby/object:Gem::Dependency
|
48
37
|
name: rspec
|
49
|
-
requirement: &
|
38
|
+
requirement: &70261680610860 !ruby/object:Gem::Requirement
|
50
39
|
none: false
|
51
40
|
requirements:
|
52
41
|
- - ! '>='
|
@@ -54,10 +43,10 @@ dependencies:
|
|
54
43
|
version: '0'
|
55
44
|
type: :development
|
56
45
|
prerelease: false
|
57
|
-
version_requirements: *
|
46
|
+
version_requirements: *70261680610860
|
58
47
|
- !ruby/object:Gem::Dependency
|
59
48
|
name: mocha
|
60
|
-
requirement: &
|
49
|
+
requirement: &70261680609720 !ruby/object:Gem::Requirement
|
61
50
|
none: false
|
62
51
|
requirements:
|
63
52
|
- - ! '>='
|
@@ -65,10 +54,10 @@ dependencies:
|
|
65
54
|
version: '0'
|
66
55
|
type: :development
|
67
56
|
prerelease: false
|
68
|
-
version_requirements: *
|
57
|
+
version_requirements: *70261680609720
|
69
58
|
- !ruby/object:Gem::Dependency
|
70
59
|
name: simplecov
|
71
|
-
requirement: &
|
60
|
+
requirement: &70261680608580 !ruby/object:Gem::Requirement
|
72
61
|
none: false
|
73
62
|
requirements:
|
74
63
|
- - ! '>='
|
@@ -76,7 +65,7 @@ dependencies:
|
|
76
65
|
version: '0'
|
77
66
|
type: :development
|
78
67
|
prerelease: false
|
79
|
-
version_requirements: *
|
68
|
+
version_requirements: *70261680608580
|
80
69
|
description: Gem allows statistics gathering from Ruby and Ruby on Rails applications
|
81
70
|
to Statsd
|
82
71
|
email:
|
@@ -119,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
108
|
version: '0'
|
120
109
|
segments:
|
121
110
|
- 0
|
122
|
-
hash:
|
111
|
+
hash: 4014469359470497890
|
123
112
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
113
|
none: false
|
125
114
|
requirements:
|
@@ -128,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
117
|
version: '0'
|
129
118
|
segments:
|
130
119
|
- 0
|
131
|
-
hash:
|
120
|
+
hash: 4014469359470497890
|
132
121
|
requirements: []
|
133
122
|
rubyforge_project: fozzie
|
134
123
|
rubygems_version: 1.8.10
|