meter 0.0.5 → 0.0.9

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 42a8f51ce6d77b2e7570c8765c5a448875108f91
4
+ data.tar.gz: 71cfef42ff4066b498ea05ee247ce3b6c2c9051c
5
+ SHA512:
6
+ metadata.gz: 06db06efc2f6e02b240d55365023ab20f2bf451ce6349139ef25848b0c68d58df80d8289a5f3dd58c4ded95f3f0e543faf3a0bda37f792eaa26a194d0366914f
7
+ data.tar.gz: 64f4ee7774b78ddecf7d16df10f03c9ef9d9846bec96584a65dc12b90049f40b00b1e659563c1b240f56ff33fc26b3c0448fdc5e5b60f51b105919d60da7074e
data/lib/meter/backend.rb CHANGED
@@ -166,6 +166,11 @@ module Meter
166
166
  send_stats stat, value, :s, opts
167
167
  end
168
168
 
169
+ def log(stat, data = {})
170
+ data = data.merge(app: @namespace, name: stat)
171
+ send_to_socket data.to_json
172
+ end
173
+
169
174
  private
170
175
 
171
176
  def send_stats(stat, delta, type, opts={})
@@ -183,7 +188,7 @@ module Meter
183
188
  self.class.logger.debug { "Statsd: #{message}" } if self.class.logger
184
189
  @socket.send(message, 0, @host, @port)
185
190
  rescue => boom
186
- self.class.logger.error { "Statsd: #{boom.class} #{boom}" } if self.class.logger
191
+ self.class.logger.error { "boom Statsd: #{boom.class} #{boom}" } if self.class.logger
187
192
  nil
188
193
  end
189
194
  end
@@ -5,7 +5,7 @@ module Meter
5
5
  class Configuration
6
6
 
7
7
  attr_accessor :logger, :tags
8
- attr_reader :primary_backend, :secondary_backend, :counter_backend
8
+ attr_reader :primary_backend, :secondary_backend, :counter_backend, :meter_backend
9
9
 
10
10
  def initialize(options={})
11
11
  @logger = options[:logger] || default_logger
@@ -23,6 +23,11 @@ module Meter
23
23
  @counter_backend.port = options[:counter_port] || default_counter_port
24
24
  @counter_backend.namespace = options[:namespace] || default_namespace
25
25
 
26
+ @meter_backend = Backend.new
27
+ @meter_backend.host = options[:meter_host] || default_host
28
+ @meter_backend.port = options[:meter_port] || default_meter_port
29
+ @meter_backend.namespace = options[:namespace] || default_namespace
30
+
26
31
  @tags = options[:tags] || {}
27
32
  end
28
33
 
@@ -30,6 +35,7 @@ module Meter
30
35
  primary_backend.namespace = new_namespace
31
36
  secondary_backend.namespace = new_namespace
32
37
  counter_backend.namespace = new_namespace
38
+ meter_backend.namespace = new_namespace
33
39
  end
34
40
 
35
41
  def namespace
@@ -52,6 +58,14 @@ module Meter
52
58
  secondary_backend.port
53
59
  end
54
60
 
61
+ def secondary_host
62
+ secondary_backend.host
63
+ end
64
+
65
+ def secondary_port
66
+ secondary_backend.port
67
+ end
68
+
55
69
  def primary_host=(new_host)
56
70
  primary_backend.host = new_host
57
71
  end
@@ -87,13 +101,17 @@ module Meter
87
101
  end
88
102
 
89
103
  def default_secondary_port
90
- 8126
104
+ 8127
91
105
  end
92
106
 
93
107
  def default_counter_port
94
108
  3333
95
109
  end
96
110
 
111
+ def default_meter_port
112
+ 8128
113
+ end
114
+
97
115
  def default_namespace
98
116
  nil
99
117
  end
data/lib/meter/version.rb CHANGED
@@ -2,7 +2,7 @@ module Meter
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 5
5
+ TINY = 9
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
8
8
  end
data/lib/meter.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'json'
1
2
  require 'meter/configuration'
2
3
 
3
4
  # A generic wrapper for Statsd-like gauges and counters.
@@ -8,7 +9,6 @@ module Meter
8
9
  def increment(key, options = {})
9
10
  id = options.delete(:id)
10
11
  primary.increment key, options
11
- secondary.increment key, options
12
12
  if id
13
13
  counter.increment "#{key}.#{id}", options
14
14
  end
@@ -17,7 +17,6 @@ module Meter
17
17
  def count(key, delta, options = {})
18
18
  id = options.delete(:id)
19
19
  primary.count key, delta, options
20
- secondary.count key, delta, options
21
20
  if id
22
21
  counter.count "#{key}.#{id}", delta, options
23
22
  end
@@ -25,13 +24,16 @@ module Meter
25
24
 
26
25
  def gauge(key, value, options = {})
27
26
  primary.gauge key, value, options
28
- secondary.gauge key, value, options
29
27
  end
30
28
 
31
29
  def histogram(key, value, options = {})
32
30
  primary.histogram key, value, options
33
31
  end
34
32
 
33
+ def log(key, data)
34
+ meter.log(key, data)
35
+ end
36
+
35
37
  private
36
38
 
37
39
  def primary
@@ -46,4 +48,8 @@ module Meter
46
48
  config.counter_backend
47
49
  end
48
50
 
51
+ def meter
52
+ config.meter_backend
53
+ end
54
+
49
55
  end
metadata CHANGED
@@ -1,64 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meter
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.5
4
+ version: 0.0.9
6
5
  platform: ruby
7
6
  authors:
8
7
  - bukowskis
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-09-13 00:00:00.000000000 Z
11
+ date: 2014-10-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
- none: false
21
- name: rspec
22
20
  type: :development
23
21
  prerelease: false
24
- requirement: !ruby/object:Gem::Requirement
22
+ version_requirements: !ruby/object:Gem::Requirement
25
23
  requirements:
26
- - - ! '>='
24
+ - - ">="
27
25
  - !ruby/object:Gem::Version
28
26
  version: '0'
29
- none: false
30
27
  - !ruby/object:Gem::Dependency
31
- version_requirements: !ruby/object:Gem::Requirement
28
+ name: guard-rspec
29
+ requirement: !ruby/object:Gem::Requirement
32
30
  requirements:
33
- - - ! '>='
31
+ - - ">="
34
32
  - !ruby/object:Gem::Version
35
33
  version: '0'
36
- none: false
37
- name: guard-rspec
38
34
  type: :development
39
35
  prerelease: false
40
- requirement: !ruby/object:Gem::Requirement
36
+ version_requirements: !ruby/object:Gem::Requirement
41
37
  requirements:
42
- - - ! '>='
38
+ - - ">="
43
39
  - !ruby/object:Gem::Version
44
40
  version: '0'
45
- none: false
46
41
  - !ruby/object:Gem::Dependency
47
- version_requirements: !ruby/object:Gem::Requirement
42
+ name: rb-fsevent
43
+ requirement: !ruby/object:Gem::Requirement
48
44
  requirements:
49
- - - ! '>='
45
+ - - ">="
50
46
  - !ruby/object:Gem::Version
51
47
  version: '0'
52
- none: false
53
- name: rb-fsevent
54
48
  type: :development
55
49
  prerelease: false
56
- requirement: !ruby/object:Gem::Requirement
50
+ version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
- - - ! '>='
52
+ - - ">="
59
53
  - !ruby/object:Gem::Version
60
54
  version: '0'
61
- none: false
62
55
  description: A generic abstraction layer for fire and forgetting measurements via
63
56
  UDP.
64
57
  email:
@@ -66,42 +59,34 @@ executables: []
66
59
  extensions: []
67
60
  extra_rdoc_files: []
68
61
  files:
62
+ - lib/meter.rb
69
63
  - lib/meter/backend.rb
70
64
  - lib/meter/configuration.rb
71
65
  - lib/meter/version.rb
72
- - lib/meter.rb
73
- - spec/lib/meter/backend_spec.rb
74
- - spec/lib/meter/configuration_spec.rb
75
- - spec/lib/meter_spec.rb
76
- - spec/spec_helper.rb
77
- - README.md
78
- - LICENSE
79
66
  homepage: https://github.com/bukowskis/meter
80
67
  licenses:
81
68
  - MIT
69
+ metadata: {}
82
70
  post_install_message:
83
71
  rdoc_options:
84
- - --encoding
72
+ - "--encoding"
85
73
  - UTF-8
86
74
  require_paths:
87
75
  - lib
88
76
  required_ruby_version: !ruby/object:Gem::Requirement
89
77
  requirements:
90
- - - ! '>='
78
+ - - ">="
91
79
  - !ruby/object:Gem::Version
92
80
  version: '0'
93
- none: false
94
81
  required_rubygems_version: !ruby/object:Gem::Requirement
95
82
  requirements:
96
- - - ! '>='
83
+ - - ">="
97
84
  - !ruby/object:Gem::Version
98
85
  version: '0'
99
- none: false
100
86
  requirements: []
101
87
  rubyforge_project:
102
- rubygems_version: 1.8.23
88
+ rubygems_version: 2.2.2
103
89
  signing_key:
104
- specification_version: 3
90
+ specification_version: 4
105
91
  summary: A generic abstraction layer for fire and forgetting measurements via UDP.
106
92
  test_files: []
107
- has_rdoc:
data/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License
2
-
3
- Copyright (c) 2013 Bukowskis
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
data/README.md DELETED
@@ -1,29 +0,0 @@
1
- # Meter
2
-
3
- BETA!
4
-
5
- A generic abstraction layer for fire and forgetting measurements via UDP.
6
-
7
- # Installation
8
-
9
- ```bash
10
- gem install meter
11
- ````
12
-
13
- # Usage
14
-
15
- #### Syntax
16
-
17
- ```ruby
18
- Meter.increment key, delta, options
19
- ````
20
-
21
- #### Examples
22
-
23
- ```ruby
24
- Meter.increment 'my.key'
25
- Meter.increment 'my.key', 5
26
- Meter.increment 'my.key', 5, sample_rate: 0.25
27
-
28
- Meter.gauge 'my.gauge.key', 20
29
- ```
@@ -1,18 +0,0 @@
1
- require 'spec_helper'
2
- require 'meter'
3
-
4
- describe Meter::Backend do
5
-
6
- let(:backend) { Meter.config.primary_backend }
7
-
8
- before do
9
- Meter.reset!
10
- end
11
-
12
- describe '.increment' do
13
- it 'works and I did not make any mistakes when copy and pasting the backend from StatsD' do
14
- backend.increment 'my.counter'
15
- end
16
- end
17
-
18
- end
@@ -1,60 +0,0 @@
1
- require 'spec_helper'
2
- require 'meter/configuration'
3
-
4
- describe Meter::Configuration do
5
-
6
- let(:logger) { mock(:logger) }
7
- let(:config) { Meter.config }
8
-
9
- before do
10
- Meter.reset!
11
- end
12
-
13
- describe '.config' do
14
-
15
- describe '#logger' do
16
- it 'is an STDOUT logger' do
17
- Logger.should_receive(:new).with(STDOUT).and_return logger
18
- config.logger.should be logger
19
- end
20
-
21
- context 'with Rails' do
22
- before do
23
- ensure_module :Rails
24
- Rails.stub!(:logger).and_return(logger)
25
- end
26
-
27
- after do
28
- Object.send(:remove_const, :Rails)
29
- end
30
-
31
- it 'is the Rails logger' do
32
- config.logger.should be Rails.logger
33
- end
34
- end
35
- end
36
-
37
- describe '#primary_backend and #secondary_backend' do
38
- it 'is a Backend' do
39
- config.primary_backend.should be_instance_of Meter::Backend
40
- config.secondary_backend.should be_instance_of Meter::Backend
41
- end
42
-
43
- it 'has the default host' do
44
- config.primary_backend.host.should == '127.0.0.1'
45
- config.secondary_backend.host.should == '127.0.0.1'
46
- end
47
-
48
- it 'has the default namespace' do
49
- config.primary_backend.namespace.should == nil
50
- config.secondary_backend.namespace.should == nil
51
- end
52
-
53
- it 'has the default port' do
54
- config.primary_backend.port.should == 8125
55
- config.secondary_backend.port.should == 8126
56
- end
57
- end
58
-
59
- end
60
- end
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Meter do
4
-
5
- let(:meter) { Meter }
6
- let(:primary) { Meter.config.primary_backend }
7
- let(:secondary) { Meter.config.secondary_backend }
8
- let(:counter) { Meter.config.counter_backend }
9
-
10
- describe '.increment' do
11
- context "when given an id as option" do
12
- it "proxies to the counter with the id" do
13
- counter.should_receive(:increment).with("my.key.123", {})
14
- meter.increment 'my.key', :id => 123
15
- end
16
-
17
- it "proxies to the primary and secondary without the id" do
18
- primary.should_receive(:increment).with("my.key", {})
19
- secondary.should_receive(:increment).with("my.key", {})
20
- meter.increment 'my.key', :id => 123
21
- end
22
- end
23
-
24
- context "when id is NOT given as an option" do
25
- it "doesn't proxy to the counter at all" do
26
- counter.should_not_receive(:increment)
27
- meter.increment 'my.key'
28
- end
29
-
30
- it "proxies to the primary and secondary" do
31
- primary.should_receive(:increment).with("my.key", {})
32
- secondary.should_receive(:increment).with("my.key", {})
33
- meter.increment 'my.key'
34
- end
35
- end
36
- end
37
- end
data/spec/spec_helper.rb DELETED
@@ -1,33 +0,0 @@
1
- require 'meter'
2
-
3
- def ensure_class_or_module(full_name, class_or_module)
4
- full_name.to_s.split(/::/).inject(Object) do |context, name|
5
- begin
6
- context.const_get(name)
7
- rescue NameError
8
- if class_or_module == :class
9
- context.const_set(name, Class.new)
10
- else
11
- context.const_set(name, Module.new)
12
- end
13
- end
14
- end
15
- end
16
-
17
- def ensure_module(name)
18
- ensure_class_or_module(name, :module)
19
- end
20
-
21
- def ensure_class(name)
22
- ensure_class_or_module(name, :class)
23
- end
24
-
25
- RSpec.configure do |config|
26
- config.before do
27
- Meter.config.logger = nil
28
- end
29
-
30
- config.after do
31
- Meter.reset!
32
- end
33
- end