metrico 0.1.1 → 0.2.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.
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