metrico 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f330982dc8369134e195d1dfacc36be6f4bab1cd
4
- data.tar.gz: b60ffc395c88344aa8357a593e2b1577ccdbf03b
3
+ metadata.gz: 2a8644b7e9a984a6345ade83ca30e2ed8ebfc0c2
4
+ data.tar.gz: 247607784d7957334bcaa52e9693a52829858a4c
5
5
  SHA512:
6
- metadata.gz: a492cbaaa36df65c5a87bcc76c809433cb6d1e256175fd8fe8ae32e0fa1e7ecb556563f73c50fc329d6169fb9f17c319c6ad9834bde343f87b3317d7fb093df3
7
- data.tar.gz: 9c808983134ace60520fb4eb1164cbef601802610024f69c80ea9a144ed9841fef8a0738c26a0c14fffa93fafb3e37eb9027b493771577f67245b67802635f5f
6
+ metadata.gz: 33d6aec3386624f37a0a5313f88f294a9b0ac8f5d62c76de25f3664d9e05d0156105f9b03a94872e580fde779fb851a965b5b5e30ea1a74fa8bf5346e12db1e4
7
+ data.tar.gz: ddc966ae1109ed7e266f364143e54bc5a494d703aba96600981eff11d881fe2a0e2060cd70ba5d5f8792acfd9cc6ea6ebbf00b2d647e26602aea9084c6c2f810
data/.rubocop.yml ADDED
@@ -0,0 +1,49 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2017-06-22 17:25:28 +0300 using RuboCop version 0.49.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 2
10
+ # Cop supports --auto-correct.
11
+ Layout/SpaceAfterComma:
12
+ Exclude:
13
+ - 'lib/metrico/point.rb'
14
+
15
+ # Offense count: 1
16
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
17
+ # URISchemes: http, https
18
+ Metrics/LineLength:
19
+ Max: 85
20
+
21
+ # Offense count: 4
22
+ Style/Documentation:
23
+ Exclude:
24
+ - 'spec/**/*'
25
+ - 'test/**/*'
26
+ - 'lib/metrico.rb'
27
+ - 'lib/metrico/client.rb'
28
+ - 'lib/metrico/config.rb'
29
+ - 'lib/metrico/point.rb'
30
+
31
+ # Offense count: 1
32
+ # Cop supports --auto-correct.
33
+ # Configuration parameters: EnforcedStyle, SupportedStyles, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
34
+ # SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
35
+ Style/HashSyntax:
36
+ Exclude:
37
+ - 'Rakefile'
38
+
39
+ # Offense count: 11
40
+ # Cop supports --auto-correct.
41
+ # Configuration parameters: EnforcedStyle, SupportedStyles, ConsistentQuotesInMultiline.
42
+ # SupportedStyles: single_quotes, double_quotes
43
+ Style/StringLiterals:
44
+ Exclude:
45
+ - 'Gemfile'
46
+ - 'Rakefile'
47
+ - 'bin/console'
48
+ - 'spec/metrico_spec.rb'
49
+ - 'spec/spec_helper.rb'
data/README.md CHANGED
@@ -19,11 +19,19 @@ $ bundle install
19
19
  ```ruby
20
20
  # config/initializers/metrico.rb
21
21
  Metrico.configure do |config|
22
- config.app_name = 'Compliance' # required
22
+ config.app_name = 'app_name' # required
23
23
  config.hostname = 'globalhost' # required
24
- config.nodes = ['nats://telegraf-0.somenatsnode.com:4222'] # required
24
+ config.nats_connect_options = {
25
+ servers: ['nats://telegraf-0.somenatsnode.com:4222']
26
+ }
27
+ # define lambdas for these callbacks if you need some
28
+ config.on_error = ->{}
29
+ config.on_reconnect = ->{}
30
+ config.on_disconnect = ->{}
31
+ config.on_close = ->{}
25
32
  end
26
33
  ```
34
+ For more nats connect options see [https://github.com/nats-io/pure-ruby-nats/blob/master/lib/nats/io/client.rb#L154](https://github.com/nats-io/pure-ruby-nats/blob/master/lib/nats/io/client.rb#L154). You also can define most of all connection config via ENV variables.
27
35
 
28
36
  ## Usage
29
37
  In your app you have to push metrics, passing name, hash of metric/value and hash of tags.
@@ -4,13 +4,20 @@ module Metrico
4
4
 
5
5
  def initialize
6
6
  @transport = NATS::IO::Client.new
7
- @transport.connect(
8
- servers: Metrico.config.nodes
9
- )
7
+ @transport.connect(Metrico.config.nats_connect_options)
8
+ transport_callbacks
10
9
  end
11
10
 
12
11
  def push(point)
13
12
  transport.publish(Metrico.config.subject, point.to_s)
14
13
  end
14
+
15
+ private def transport_callbacks
16
+ %w[on_error on_reconnect on_disconnect on_close].each do |callback|
17
+ if Metrico.config.send(callback)
18
+ @transport.send(callback, &Metrico.config.send(callback))
19
+ end
20
+ end
21
+ end
15
22
  end
16
23
  end
@@ -1,9 +1,11 @@
1
1
  module Metrico
2
2
  class Config
3
- attr_accessor :nodes,
4
- :app_name,
5
- :hostname,
6
- :subject
3
+ attr_accessor(
4
+ :enabled, :app_name, :hostname,
5
+ :subject, :nats_connect_options,
6
+ :on_error, :on_reconnect,
7
+ :on_disconnect, :on_close
8
+ )
7
9
 
8
10
  def initialize
9
11
  @subject = 'metrico'
data/lib/metrico/point.rb CHANGED
@@ -35,7 +35,7 @@ module Metrico
35
35
  end
36
36
 
37
37
  private def comma_equal_flatten(hash)
38
- hash.map { |k,v| [k,v].join('=') }.join(',')
38
+ hash.map { |k, v| [k, v].join('=') }.join(',')
39
39
  end
40
40
  end
41
41
  end
@@ -1,3 +1,3 @@
1
1
  module Metrico
2
- VERSION = "0.1.1"
2
+ VERSION = '0.2.0'.freeze
3
3
  end
data/lib/metrico.rb CHANGED
@@ -18,9 +18,13 @@ module Metrico
18
18
  @client ||= Client.new
19
19
  end
20
20
 
21
+ def enabled?
22
+ self.config && self.config.enabled
23
+ end
24
+
21
25
  def push(name, fields, tags = {})
22
26
  point = Point.new(name, fields, tags)
23
- client.push(point)
27
+ client.push(point) if enabled?
24
28
  end
25
29
  end
26
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metrico
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Shamatov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-15 00:00:00.000000000 Z
11
+ date: 2017-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nats-pure
@@ -75,6 +75,7 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
77
  - ".rspec"
78
+ - ".rubocop.yml"
78
79
  - ".travis.yml"
79
80
  - Gemfile
80
81
  - LICENSE.txt