restful_metrics 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Restful Metrics Ruby Client
1
+ # RESTful Metrics Ruby Client
2
2
 
3
3
  Tracks your app's custom business metrics in your Ruby apps.
4
4
 
@@ -78,7 +78,7 @@ You would transmit this data point with the following:
78
78
 
79
79
  ## Copyright
80
80
 
81
- Copyright (c) 2011 Restful Labs LLC. See LICENSE for details.
81
+ Copyright (c) 2011-2012 RESTful Labs LLC. See LICENSE for details.
82
82
 
83
83
  ## Authors
84
84
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.1.1
@@ -20,7 +20,7 @@ module RestfulMetrics
20
20
  @@connection.debug = @@debug if @@connection
21
21
  end
22
22
 
23
- def debug
23
+ def debug?
24
24
  @@debug
25
25
  end
26
26
 
@@ -78,13 +78,7 @@ module RestfulMetrics
78
78
  return false
79
79
  end
80
80
 
81
- if @@connection.nil?
82
- if ENV["RESTFUL_METRICS_API_KEY"]
83
- @@connection = Connection.new(ENV["RESTFUL_METRICS_API_KEY"])
84
- else
85
- raise NoConnectionEstablished
86
- end
87
- end
81
+ raise NoConnectionEstablished if @@connection.nil?
88
82
 
89
83
  if async?
90
84
  self.delay.transmit(endpoint, data)
@@ -99,7 +93,7 @@ module RestfulMetrics
99
93
  @@connection.post(endpoint, data)
100
94
  true
101
95
  rescue
102
- logger "There was an error communicating with the server"
96
+ logger "There was an error communicating with the server: #{$!}"
103
97
  false
104
98
  end
105
99
  end
@@ -1,8 +1,8 @@
1
1
  module RestfulMetrics
2
2
 
3
3
  class Connection
4
-
5
- include RestfulMetrics::LogTools
4
+
5
+ extend LogTools
6
6
 
7
7
  attr_accessor :debug, :async
8
8
  attr_reader :api_key, :default_options
@@ -23,7 +23,7 @@ module RestfulMetrics
23
23
  def request(method, endpoint, data=nil)
24
24
  headers = { 'User-Agent' => "Restful Metrics Ruby Client v#{VERSION}",
25
25
  'Content-Type' => "application/json" }
26
-
26
+
27
27
  if data.nil?
28
28
  data = @default_options
29
29
  else
@@ -31,14 +31,14 @@ module RestfulMetrics
31
31
  end
32
32
 
33
33
  if debug
34
- puts "request: #{method.to_s.upcase} #{endpoint}"
35
- puts "headers:"
34
+ logger "request: #{method.to_s.upcase} #{endpoint}"
35
+ logger "headers:"
36
36
  headers.each do |key, value|
37
- puts "#{key}=#{value}"
37
+ logger "#{key}=#{value}"
38
38
  end
39
39
  if [:post, :put].include?(method)
40
- puts "data:"
41
- puts Yajl::Encoder.encode data
40
+ logger "data:"
41
+ logger Yajl::Encoder.encode data
42
42
  end
43
43
  end
44
44
 
@@ -48,20 +48,20 @@ module RestfulMetrics
48
48
  logger "there was an error encoding your submission: #{$!}"
49
49
  return nil
50
50
  end
51
-
51
+
52
52
  response = send_request(method, endpoint, headers, data)
53
53
 
54
54
  if debug
55
55
  if response.nil?
56
- puts "There was an error processing the response from Restful Metrics."
56
+ logger "There was an error processing the response from Restful Metrics."
57
57
  else
58
- puts "\nresponse: #{response.code}"
59
- puts "headers:"
58
+ logger "\nresponse: #{response.code}"
59
+ logger "headers:"
60
60
  response.header.each do |key, value|
61
- puts "#{key}=#{value}"
61
+ logger "#{key}=#{value}"
62
62
  end
63
- puts "body:"
64
- puts response.body
63
+ logger "body:"
64
+ logger response.body
65
65
  end
66
66
  end
67
67
 
@@ -79,11 +79,11 @@ module RestfulMetrics
79
79
  content
80
80
  end
81
81
 
82
- def send_request(method, endpoint, headers, data=nil)
82
+ def send_request(method, endpoint, headers, data=nil)
83
83
  begin
84
- response = RestClient::Request.execute(:method => :post,
85
- :url => endpoint,
86
- :payload => data,
84
+ response = RestClient::Request.execute(:method => :post,
85
+ :url => endpoint,
86
+ :payload => data,
87
87
  :headers => headers)
88
88
  rescue => e
89
89
  logger "there was an error transmitting your entry: #{$!}"
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.summary = %q{Ruby client for the RESTful Metrics service.}
7
7
  s.description = %q{Ruby client for the RESTful Metrics service.}
8
8
  s.homepage = %q{http://github.com/restful-labs/resetful_metrics-ruby}
9
- s.version = "1.1.0"
9
+ s.version = File.read(File.join(File.dirname(__FILE__), 'VERSION'))
10
10
  s.authors = ["Mauricio Gomes"]
11
11
  s.email = "mauricio@restful-labs.com"
12
12
 
data/spec/client_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
- describe "A NON-initialized Restful Metrics client" do
3
+ describe "A NON-initialized RESTful Metrics client" do
4
4
 
5
5
  it "should NOT send a metric data point" do
6
6
  lambda {
@@ -21,19 +21,23 @@ describe "A NON-initialized Restful Metrics client" do
21
21
  RestfulMetrics::Connection.any_instance.stubs(:post).returns(100)
22
22
  end
23
23
 
24
- it "should send a metric data point" do
25
- RestfulMetrics::Client.add_metric("foo.bar.org", "hit", 1).should be_true
24
+ it "should NOT send a metric data point" do
25
+ lambda {
26
+ RestfulMetrics::Client.add_metric("foo.bar.org", "hit", 1).should be_true
27
+ }.should raise_error(RestfulMetrics::NoConnectionEstablished)
26
28
  end
27
29
 
28
- it "should send a compound metric data point" do
29
- RestfulMetrics::Client.add_compound_metric("foo.bar.org", "hit", [1,2,3]).should be_true
30
+ it "should NOT send a compound metric data point" do
31
+ lambda {
32
+ RestfulMetrics::Client.add_compound_metric("foo.bar.org", "hit", [1,2,3]).should be_true
33
+ }.should raise_error(RestfulMetrics::NoConnectionEstablished)
30
34
  end
31
35
 
32
36
  end
33
37
 
34
38
  end
35
39
 
36
- describe "A disabled Restful Metrics client" do
40
+ describe "A disabled RESTful Metrics client" do
37
41
 
38
42
  before(:each) do
39
43
  RestfulMetrics::Client.disabled = true
@@ -55,18 +59,58 @@ describe "A disabled Restful Metrics client" do
55
59
 
56
60
  end
57
61
 
58
- describe "An initialized Restful Metrics client" do
62
+ describe "An initialized RESTful Metrics client" do
59
63
 
60
64
  before(:each) do
61
65
  @connection = RestfulMetrics::Connection
62
- @connection.any_instance.stubs(:post).returns(true)
63
66
  RestfulMetrics::Client.set_credentials('xyz123')
64
67
  RestfulMetrics::Client.disabled = false
65
68
  Delayed::Job.delete_all
66
69
  end
67
70
 
71
+ describe "in debug mode" do
72
+
73
+ class SampleRequest
74
+
75
+ def body
76
+ '{ "test": "success" }'
77
+ end
78
+
79
+ def code
80
+ 200
81
+ end
82
+
83
+ def header
84
+ { "one" => "test", "two" => "test" }
85
+ end
86
+
87
+ end
88
+
89
+ before(:all) do
90
+ RestfulMetrics::Client.debug = true
91
+ RestfulMetrics::Client.debug?.should be_true
92
+ end
93
+
94
+ it "should send a metric to RESTful Metrics while outputting debug info" do
95
+ @connection.any_instance.expects(:logger).at_least_once
96
+ @connection.any_instance.expects(:send_request).once.returns(SampleRequest.new)
97
+ RestfulMetrics::Client.add_metric("foo.bar.org", "hit", 1).should == true
98
+ end
99
+
100
+ it "should send the compound metric to RESTful Metrics while outputting debug info" do
101
+ @connection.any_instance.expects(:logger).at_least_once
102
+ @connection.any_instance.expects(:send_request).once.returns(SampleRequest.new)
103
+ RestfulMetrics::Client.add_compound_metric("foo.bar.org", "hit", [1,2,3]).should be_true
104
+ end
105
+
106
+ end
107
+
68
108
  describe "initializing the client" do
69
109
 
110
+ before(:each) do
111
+ @connection.any_instance.stubs(:post).returns(true)
112
+ end
113
+
70
114
  it "should set the API key" do
71
115
  RestfulMetrics::Client.set_credentials('4ed4ef44e44ed4').should be_true
72
116
  end
@@ -80,17 +124,21 @@ describe "An initialized Restful Metrics client" do
80
124
 
81
125
  describe "adding metrics synchronously" do
82
126
 
127
+ before(:each) do
128
+ @connection.any_instance.stubs(:post).returns(true)
129
+ end
130
+
83
131
  before(:all) do
84
132
  RestfulMetrics::Client.async = false
85
133
  RestfulMetrics::Client.async?.should be_false
86
134
  end
87
135
 
88
- it "should send the metric to Restful Metrics" do
136
+ it "should send the metric to RESTful Metrics" do
89
137
  @connection.any_instance.expects(:post).at_least_once.returns({})
90
138
  RestfulMetrics::Client.add_metric("foo.bar.org", "hit", 1).should be_true
91
139
  end
92
140
 
93
- it "should send the compound metric to Restful Metrics" do
141
+ it "should send the compound metric to RESTful Metrics" do
94
142
  @connection.any_instance.expects(:post).at_least_once.returns({})
95
143
  RestfulMetrics::Client.add_compound_metric("foo.bar.org", "hit", [1,2,3]).should be_true
96
144
  end
@@ -99,6 +147,10 @@ describe "An initialized Restful Metrics client" do
99
147
 
100
148
  describe "adding metrics asynchronously" do
101
149
 
150
+ before(:each) do
151
+ @connection.any_instance.stubs(:post).returns(true)
152
+ end
153
+
102
154
  before(:all) do
103
155
  RestfulMetrics::Client.async = true
104
156
  RestfulMetrics::Client.async?.should be_true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restful_metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
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: 2012-02-19 00:00:00.000000000 Z
12
+ date: 2012-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yajl-ruby
16
- requirement: &70354861209440 !ruby/object:Gem::Requirement
16
+ requirement: &70322334817280 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.8.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70354861209440
24
+ version_requirements: *70322334817280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &70354861208320 !ruby/object:Gem::Requirement
27
+ requirement: &70322334816280 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70354861208320
35
+ version_requirements: *70322334816280
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70354861207620 !ruby/object:Gem::Requirement
38
+ requirement: &70322334831700 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.8.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70354861207620
46
+ version_requirements: *70322334831700
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mocha
49
- requirement: &70354861206880 !ruby/object:Gem::Requirement
49
+ requirement: &70322334831000 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.10.4
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70354861206880
57
+ version_requirements: *70322334831000
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: actionpack
60
- requirement: &70354861206140 !ruby/object:Gem::Requirement
60
+ requirement: &70322334830300 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 3.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70354861206140
68
+ version_requirements: *70322334830300
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rack
71
- requirement: &70354861205400 !ruby/object:Gem::Requirement
71
+ requirement: &70322334829500 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.2.5
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70354861205400
79
+ version_requirements: *70322334829500
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: activesupport
82
- requirement: &70354861204600 !ruby/object:Gem::Requirement
82
+ requirement: &70322334828920 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 3.0.0
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70354861204600
90
+ version_requirements: *70322334828920
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: delayed_job
93
- requirement: &70354861203940 !ruby/object:Gem::Requirement
93
+ requirement: &70322334828280 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: 3.0.1
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70354861203940
101
+ version_requirements: *70322334828280
102
102
  description: Ruby client for the RESTful Metrics service.
103
103
  email: mauricio@restful-labs.com
104
104
  executables: []