libhoney 1.7.0 → 1.8.1

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
  SHA256:
3
- metadata.gz: ab4842399534d125e9b6a5efeacca99e6a6a49f07caef2c71e0ac70430e13830
4
- data.tar.gz: e497f15c36c2856e8c26bd7ac3ea814e1262d1d42e96ceb462fed7d6a5f143cd
3
+ metadata.gz: d74e33b8302fc833dd35b082d3737fa7fdab5778619ebe32847f5a15f422e49b
4
+ data.tar.gz: 6312eef683fe6d91daad288b75d0066dea4bf24ba19748fd57c0d720438c2e6d
5
5
  SHA512:
6
- metadata.gz: 99449aa5c26539244ec71bc27e5fca1de59119171d3ac0f06d35bcaf5c8207fe82ffde7c6e0bd9bfa7bad7bb1539098669b3da09a6b61fffc9cafb1ed6de977d
7
- data.tar.gz: 504dc7078f44dc2065ff2f020547aca89c58d0c3c1d3d6c4ed9d9aeb3a6dbd336c94442b54f487d336eded810485f5231a97351ac82ae200bb64b5cd6a8682bf
6
+ metadata.gz: 7de2ddd45d25a2678d2c0d7d3ae8bf951bb68f395373fdc4beffc95f0ae83e28f802a71970eda66ef39eee8398710e1c4365d84c3009f898d70df3b57d9fe4ad
7
+ data.tar.gz: 61dff7d76a2da82da52e5c4d0f94314393a34039c647008b6238e2c544007e7454479241320e7bde40cebe6fdbe08e7fb38453b0fd6e1515c32b33fe4d47c62b
@@ -3,6 +3,8 @@ require 'time'
3
3
  require 'json'
4
4
  require 'http'
5
5
 
6
+ require 'libhoney/null_transmission'
7
+
6
8
  # define a few additions that proxy access through Client's builder. makes Client much tighter.
7
9
  class Class
8
10
  def builder_attr_accessor(*args)
@@ -38,8 +40,8 @@ module Libhoney
38
40
  # honey.close
39
41
  #
40
42
  # Arguments:
41
- # * *writekey* is the key to use the Honeycomb service
42
- # * *dataset* is the dataset to write into
43
+ # * *writekey* is the key to use the Honeycomb service (required)
44
+ # * *dataset* is the dataset to write into (required)
43
45
  # * *sample_rate* is how many samples you want to keep. IE: 1 means you want 1 out of 1 samples kept, or all of them. 10 means you want 1 out of 10 samples kept. And so on.
44
46
  # * *url* is the url to connect to Honeycomb
45
47
  # * *num_workers* is the number of threads working on the queue of events you are generating
@@ -49,15 +51,15 @@ module Libhoney
49
51
  class Client
50
52
  # Instantiates libhoney and prepares it to send events to Honeycomb.
51
53
  #
52
- # @param writekey [String] the write key from your honeycomb team
53
- # @param dataset [String] the dataset you want
54
+ # @param writekey [String] the write key from your honeycomb team (required)
55
+ # @param dataset [String] the dataset you want (required)
54
56
  # @param sample_rate [Fixnum] cause libhoney to send 1 out of sampleRate events. overrides the libhoney instance's value.
55
57
  # @param api_host [String] the base url to send events to
56
58
  # @param transmission [Object] transport used to actually send events. If nil (the default), will be lazily initialized with a {TransmissionClient} on first event send.
57
59
  # @param block_on_send [Boolean] if more than pending_work_capacity events are written, block sending further events
58
60
  # @param block_on_responses [Boolean] if true, block if there is no thread reading from the response queue
59
- def initialize(writekey: '',
60
- dataset: '',
61
+ def initialize(writekey: nil,
62
+ dataset: nil,
61
63
  sample_rate: 1,
62
64
  api_host: 'https://api.honeycomb.io/',
63
65
  user_agent_addition: nil,
@@ -79,6 +81,18 @@ module Libhoney
79
81
  @builder.sample_rate = sample_rate
80
82
  @builder.api_host = api_host
81
83
 
84
+ @tx = transmission
85
+ if !@tx && !(writekey && dataset)
86
+ # if no writekey or dataset are configured, and we didn't override the
87
+ # transmission (e.g. to a MockTransmissionClient), that's almost
88
+ # certainly a misconfiguration, even though it's possible to override
89
+ # them on a per-event basis. So let's handle the misconfiguration
90
+ # early rather than potentially throwing thousands of exceptions at
91
+ # runtime.
92
+ warn "#{self.class.name}: no #{writekey ? 'dataset' : 'writekey'} configured, disabling sending events"
93
+ @tx = NullTransmissionClient.new
94
+ end
95
+
82
96
  @user_agent_addition = user_agent_addition
83
97
 
84
98
  @block_on_send = block_on_send
@@ -88,7 +102,6 @@ module Libhoney
88
102
  @max_concurrent_batches = max_concurrent_batches
89
103
  @pending_work_capacity = pending_work_capacity
90
104
  @responses = SizedQueue.new(2 * @pending_work_capacity)
91
- @tx = transmission
92
105
  @lock = Mutex.new
93
106
 
94
107
  self
@@ -1,4 +1,5 @@
1
1
  require 'libhoney/client'
2
+ require 'libhoney/log_transmission'
2
3
 
3
4
  module Libhoney
4
5
 
@@ -0,0 +1,22 @@
1
+ require 'libhoney/client'
2
+ require 'libhoney/null_transmission'
3
+
4
+ module Libhoney
5
+
6
+ # A no-op client that silently drops events. Does not send events to
7
+ # Honeycomb, or to anywhere else for that matter.
8
+ #
9
+ # This class is intended as a fallback for callers that wanted to instantiate
10
+ # a regular Client but had insufficient config to do so (e.g. missing
11
+ # writekey).
12
+ #
13
+ # @api private
14
+ class NullClient < Client
15
+ def initialize(*args, **kwargs)
16
+ super(*args,
17
+ transmission: NullTransmissionClient.new,
18
+ **kwargs)
19
+ end
20
+ end
21
+
22
+ end
@@ -0,0 +1,13 @@
1
+ module Libhoney
2
+ # A no-op version of TransmissionClient that silently drops events (without
3
+ # sending them to Honeycomb, or anywhere else for that matter).
4
+ #
5
+ # @api private
6
+ class NullTransmissionClient
7
+ def add(event)
8
+ end
9
+
10
+ def close(drain)
11
+ end
12
+ end
13
+ end
@@ -1,4 +1,5 @@
1
1
  require 'libhoney/client'
2
+ require 'libhoney/mock_transmission'
2
3
 
3
4
  module Libhoney
4
5
 
@@ -1,3 +1,3 @@
1
1
  module Libhoney
2
- VERSION = "1.7.0"
2
+ VERSION = "1.8.1"
3
3
  end
data/lib/libhoney.rb CHANGED
@@ -1,9 +1,8 @@
1
1
  require 'libhoney/client'
2
2
  require 'libhoney/log_client'
3
+ require 'libhoney/null_client'
3
4
  require 'libhoney/test_client'
4
5
  require 'libhoney/version'
5
6
  require 'libhoney/builder'
6
7
  require 'libhoney/response'
7
8
  require 'libhoney/transmission'
8
- require 'libhoney/log_transmission'
9
- require 'libhoney/mock_transmission'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libhoney
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Honeycomb.io Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-09 00:00:00.000000000 Z
11
+ date: 2018-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -144,6 +144,8 @@ files:
144
144
  - lib/libhoney/log_client.rb
145
145
  - lib/libhoney/log_transmission.rb
146
146
  - lib/libhoney/mock_transmission.rb
147
+ - lib/libhoney/null_client.rb
148
+ - lib/libhoney/null_transmission.rb
147
149
  - lib/libhoney/response.rb
148
150
  - lib/libhoney/test_client.rb
149
151
  - lib/libhoney/transmission.rb
@@ -169,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
171
  version: '0'
170
172
  requirements: []
171
173
  rubyforge_project:
172
- rubygems_version: 2.7.6
174
+ rubygems_version: 2.7.7
173
175
  signing_key:
174
176
  specification_version: 4
175
177
  summary: send data to Honeycomb