libhoney 1.14.4 → 1.15.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 +4 -4
- data/.circleci/config.yml +138 -63
- data/.editorconfig +12 -0
- data/.github/CODEOWNERS +5 -0
- data/CHANGELOG.md +18 -0
- data/README.md +8 -5
- data/lib/libhoney/client.rb +1 -1
- data/lib/libhoney/transmission.rb +27 -3
- data/lib/libhoney/version.rb +1 -1
- data/libhoney.gemspec +1 -1
- metadata +10 -8
- data/Gemfile.lock +0 -101
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26ab54ab7ffb098ee3f1b41b211ca8a1295de834e00c296711fc049a6a9b858e
|
4
|
+
data.tar.gz: 695db353c2c36287e60db383567021b0f35ed11a7472ab0698d8d74832eaf906
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 618e014df070b756a691879c2fb10412ddff2a8224fbfc853983fc0c9b38546366abe23c869c9bc9b65acf9178751ca352bfe331c9904dbec733483c82711ece
|
7
|
+
data.tar.gz: 40f9950ceb87f8512c60cf4328aa90421b3242068826aab54ee858717529de348d34a9d862854e00ca36c384cc0ed6c7e9f4fdec51af1c51c8bff7e3d5b1bcf3
|
data/.circleci/config.yml
CHANGED
@@ -1,56 +1,63 @@
|
|
1
|
-
version: 2.
|
1
|
+
version: 2.1
|
2
2
|
|
3
|
-
|
4
|
-
- checkout
|
5
|
-
- restore_cache:
|
6
|
-
keys:
|
7
|
-
- v1-dependencies-{{ checksum "Gemfile.lock" }}
|
8
|
-
# fallback to using the latest cache if no exact match is found
|
9
|
-
- v1-dependencies-
|
10
|
-
- run:
|
11
|
-
name: install dependencies
|
12
|
-
command: |
|
13
|
-
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
14
|
-
- save_cache:
|
15
|
-
paths:
|
16
|
-
- ./vendor/bundle
|
17
|
-
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
|
18
|
-
- run:
|
19
|
-
name: run rubocop
|
20
|
-
command: bundle exec rake rubocop
|
21
|
-
- run:
|
22
|
-
name: run tests
|
23
|
-
command: bundle exec rake test
|
3
|
+
# YAML Anchors to reduce copypasta
|
24
4
|
|
25
|
-
#
|
26
|
-
|
5
|
+
# This is necessary for job to run when a tag is created
|
6
|
+
filters_always: &filters_always
|
27
7
|
filters:
|
28
|
-
|
29
|
-
|
8
|
+
tags:
|
9
|
+
only: /.*/
|
30
10
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
11
|
+
# Restrict running to only be on tags starting with vNNNN
|
12
|
+
filters_publish: &filters_publish
|
13
|
+
filters:
|
14
|
+
tags:
|
15
|
+
only: /^v[0-9].*/
|
16
|
+
branches:
|
17
|
+
ignore: /.*/
|
18
|
+
|
19
|
+
matrix_rubyversions: &matrix_rubyversions
|
20
|
+
matrix:
|
21
|
+
parameters:
|
22
|
+
rubyversion: ["2.2", "2.3", "2.4", "2.5", "2.6", "2.7"]
|
23
|
+
|
24
|
+
# Default version of ruby to use for lint and publishing
|
25
|
+
default_rubyversion: &default_rubyversion "2.7"
|
26
|
+
|
27
|
+
executors:
|
28
|
+
ruby:
|
29
|
+
parameters:
|
30
|
+
rubyversion:
|
31
|
+
type: string
|
32
|
+
default: *default_rubyversion
|
45
33
|
docker:
|
46
|
-
- image: circleci/ruby
|
47
|
-
|
48
|
-
publish:
|
34
|
+
- image: circleci/ruby:<< parameters.rubyversion >>
|
35
|
+
github:
|
49
36
|
docker:
|
50
|
-
|
51
|
-
|
52
|
-
|
37
|
+
- image: cibuilds/github:0.13.0
|
38
|
+
|
39
|
+
commands:
|
40
|
+
publish_github:
|
53
41
|
steps:
|
42
|
+
- attach_workspace:
|
43
|
+
at: ~/
|
44
|
+
- run:
|
45
|
+
name: "Artifacts being published"
|
46
|
+
command: |
|
47
|
+
echo "about to publish to tag ${CIRCLE_TAG}"
|
48
|
+
ls -l ~/artifacts/*
|
49
|
+
- run:
|
50
|
+
name: "GHR Draft"
|
51
|
+
command: ghr -draft -n ${CIRCLE_TAG} -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} ${CIRCLE_TAG} ~/artifacts
|
52
|
+
publish_rubygems:
|
53
|
+
steps:
|
54
|
+
- attach_workspace:
|
55
|
+
at: ~/
|
56
|
+
- run:
|
57
|
+
name: "Artifacts being published"
|
58
|
+
command: |
|
59
|
+
echo "about to publish to tag ${CIRCLE_TAG}"
|
60
|
+
ls -l ~/artifacts/*
|
54
61
|
- checkout
|
55
62
|
- run:
|
56
63
|
name: Setup Rubygems
|
@@ -58,25 +65,93 @@ jobs:
|
|
58
65
|
- run:
|
59
66
|
name: Publish to Rubygems
|
60
67
|
command: |
|
61
|
-
gem
|
62
|
-
|
68
|
+
gem push ~/artifacts/*.gem
|
69
|
+
|
70
|
+
jobs:
|
71
|
+
test:
|
72
|
+
parameters:
|
73
|
+
rubyversion:
|
74
|
+
type: string
|
75
|
+
default: *default_rubyversion
|
76
|
+
executor:
|
77
|
+
name: ruby
|
78
|
+
rubyversion: "<< parameters.rubyversion >>"
|
79
|
+
steps:
|
80
|
+
- checkout
|
81
|
+
- restore_cache:
|
82
|
+
keys:
|
83
|
+
- v1-dependencies-{{ checksum "libhoney.gemspec" }}
|
84
|
+
# fallback to using the latest cache if no exact match is found
|
85
|
+
- v1-dependencies-
|
86
|
+
- run:
|
87
|
+
name: install dependencies
|
88
|
+
command: |
|
89
|
+
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
90
|
+
- save_cache:
|
91
|
+
paths:
|
92
|
+
- ./vendor/bundle
|
93
|
+
key: v1-dependencies-{{ checksum "libhoney.gemspec" }}
|
94
|
+
- run:
|
95
|
+
name: run rubocop
|
96
|
+
command: bundle exec rake rubocop
|
97
|
+
- run:
|
98
|
+
name: run tests
|
99
|
+
command: bundle exec rake test
|
100
|
+
|
101
|
+
build_artifacts:
|
102
|
+
executor:
|
103
|
+
name: ruby
|
104
|
+
steps:
|
105
|
+
- checkout
|
106
|
+
- run: mkdir -p ~/artifacts
|
107
|
+
- run: gem build libhoney.gemspec
|
108
|
+
- run: cp libhoney-*.gem ~/artifacts/
|
109
|
+
- persist_to_workspace:
|
110
|
+
root: ~/
|
111
|
+
paths:
|
112
|
+
- artifacts
|
113
|
+
- store_artifacts:
|
114
|
+
path: ~/artifacts
|
115
|
+
|
116
|
+
publish_github:
|
117
|
+
executor: github
|
118
|
+
steps:
|
119
|
+
- publish_github
|
120
|
+
|
121
|
+
publish_rubygems:
|
122
|
+
executor:
|
123
|
+
name: ruby
|
124
|
+
steps:
|
125
|
+
- publish_rubygems
|
63
126
|
|
64
127
|
workflows:
|
65
|
-
|
128
|
+
nightly:
|
129
|
+
triggers:
|
130
|
+
- schedule:
|
131
|
+
cron: "0 0 * * *"
|
132
|
+
filters:
|
133
|
+
branches:
|
134
|
+
only:
|
135
|
+
- main
|
136
|
+
jobs:
|
137
|
+
- test:
|
138
|
+
<<: *matrix_rubyversions
|
66
139
|
build:
|
67
140
|
jobs:
|
68
|
-
-
|
69
|
-
|
70
|
-
|
71
|
-
-
|
72
|
-
|
141
|
+
- test:
|
142
|
+
<<: *filters_always
|
143
|
+
<<: *matrix_rubyversions
|
144
|
+
- build_artifacts:
|
145
|
+
<<: *filters_always
|
73
146
|
requires:
|
74
|
-
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
147
|
+
- test
|
148
|
+
- publish_github:
|
149
|
+
<<: *filters_publish
|
150
|
+
context: Honeycomb Secrets
|
151
|
+
requires:
|
152
|
+
- build_artifacts
|
153
|
+
- publish_rubygems:
|
154
|
+
<<: *filters_publish
|
155
|
+
context: Honeycomb Secrets
|
156
|
+
requires:
|
157
|
+
- build_artifacts
|
data/.editorconfig
ADDED
data/.github/CODEOWNERS
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# libhoney-rb changelog
|
2
|
+
|
3
|
+
## 1.15.0
|
4
|
+
|
5
|
+
Improvements:
|
6
|
+
|
7
|
+
- Do not attempt to send invalid events (#67)
|
8
|
+
|
9
|
+
Maintenance:
|
10
|
+
|
11
|
+
- Modernize circle, include github publishing (#64)
|
12
|
+
- Update .editorconfig to add new lines to end of files (#68)
|
13
|
+
|
14
|
+
### Misc
|
15
|
+
|
16
|
+
- Added CHANGELOG.md
|
17
|
+
- Updates to CI configuration and documentation
|
18
|
+
- Updated version management.
|
data/README.md
CHANGED
@@ -4,8 +4,8 @@ Ruby gem for sending events to [Honeycomb](https://www.honeycomb.io), a service
|
|
4
4
|
|
5
5
|
Requires Ruby 2.2 or greater.
|
6
6
|
|
7
|
-
-
|
8
|
-
-
|
7
|
+
- [Usage and Examples](https://docs.honeycomb.io/sdk/ruby/)
|
8
|
+
- [API Reference](https://www.rubydoc.info/gems/libhoney)
|
9
9
|
|
10
10
|
For tracing support and automatic instrumentation of Rails, Sinatra, Rack, ActiveRecord, and other frameworks, check out our [Beeline for Ruby](https://github.com/honeycombio/beeline-ruby).
|
11
11
|
|
@@ -20,8 +20,11 @@ All contributions will be released under the Apache License 2.0.
|
|
20
20
|
### Releasing a new version
|
21
21
|
|
22
22
|
CircleCI will automatically upload tagged releases to Rubygems. To release a new
|
23
|
-
version,
|
23
|
+
version, update the version using `bump`.
|
24
|
+
|
24
25
|
```
|
25
|
-
bump patch
|
26
|
-
git push --follow-tags
|
26
|
+
bump patch # Or bump minor, etc.
|
27
27
|
```
|
28
|
+
|
29
|
+
Then, after the version change has been merged into `main`, follow our usual instructions
|
30
|
+
for tagging and updating the github release.
|
data/lib/libhoney/client.rb
CHANGED
@@ -40,6 +40,8 @@ module Libhoney
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def add(event)
|
43
|
+
return unless event_valid(event)
|
44
|
+
|
43
45
|
begin
|
44
46
|
@batch_queue.enq(event, !@block_on_send)
|
45
47
|
rescue ThreadError
|
@@ -49,6 +51,26 @@ module Libhoney
|
|
49
51
|
ensure_threads_running
|
50
52
|
end
|
51
53
|
|
54
|
+
def event_valid(event)
|
55
|
+
invalid = []
|
56
|
+
invalid.push('api host') if event.api_host.nil? || event.api_host.empty?
|
57
|
+
invalid.push('write key') if event.writekey.nil? || event.writekey.empty?
|
58
|
+
invalid.push('dataset') if event.dataset.nil? || event.dataset.empty?
|
59
|
+
|
60
|
+
unless invalid.empty?
|
61
|
+
e = StandardError.new("#{self.class.name}: nil or empty required fields (#{invalid.join(', ')})"\
|
62
|
+
'. Will not attempt to send.')
|
63
|
+
Response.new(error: e).tap do |error_response|
|
64
|
+
error_response.metadata = event.metadata
|
65
|
+
enqueue_response(error_response)
|
66
|
+
end
|
67
|
+
|
68
|
+
return false
|
69
|
+
end
|
70
|
+
|
71
|
+
true
|
72
|
+
end
|
73
|
+
|
52
74
|
def send_loop
|
53
75
|
http_clients = build_http_clients
|
54
76
|
|
@@ -135,9 +157,11 @@ module Libhoney
|
|
135
157
|
|
136
158
|
loop do
|
137
159
|
begin
|
138
|
-
|
139
|
-
|
140
|
-
|
160
|
+
Thread.handle_interrupt(Timeout::Error => :on_blocking) do
|
161
|
+
while (event = Timeout.timeout(@send_frequency) { @batch_queue.pop })
|
162
|
+
key = [event.api_host, event.writekey, event.dataset]
|
163
|
+
batched_events[key] << event
|
164
|
+
end
|
141
165
|
end
|
142
166
|
|
143
167
|
break
|
data/lib/libhoney/version.rb
CHANGED
data/libhoney.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_development_dependency 'rubocop', '< 0.69'
|
30
30
|
spec.add_development_dependency 'sinatra'
|
31
31
|
spec.add_development_dependency 'sinatra-contrib'
|
32
|
-
spec.add_development_dependency 'spy'
|
32
|
+
spec.add_development_dependency 'spy', '1.0.0'
|
33
33
|
spec.add_development_dependency 'webmock', '~> 3.4'
|
34
34
|
spec.add_development_dependency 'yard'
|
35
35
|
spec.add_development_dependency 'yardstick', '~> 0.9'
|
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.
|
4
|
+
version: 1.15.0
|
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: 2020-
|
11
|
+
date: 2020-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bump
|
@@ -112,16 +112,16 @@ dependencies:
|
|
112
112
|
name: spy
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 1.0.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 1.0.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: webmock
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,12 +206,14 @@ extra_rdoc_files: []
|
|
206
206
|
files:
|
207
207
|
- ".circleci/config.yml"
|
208
208
|
- ".circleci/setup-rubygems.sh"
|
209
|
+
- ".editorconfig"
|
210
|
+
- ".github/CODEOWNERS"
|
209
211
|
- ".gitignore"
|
210
212
|
- ".rubocop.yml"
|
211
213
|
- ".rubocop_todo.yml"
|
214
|
+
- CHANGELOG.md
|
212
215
|
- CONTRIBUTORS
|
213
216
|
- Gemfile
|
214
|
-
- Gemfile.lock
|
215
217
|
- LICENSE
|
216
218
|
- NOTICE
|
217
219
|
- README.md
|
@@ -251,7 +253,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
251
253
|
- !ruby/object:Gem::Version
|
252
254
|
version: '0'
|
253
255
|
requirements: []
|
254
|
-
rubygems_version: 3.
|
256
|
+
rubygems_version: 3.1.4
|
255
257
|
signing_key:
|
256
258
|
specification_version: 4
|
257
259
|
summary: send data to Honeycomb
|
data/Gemfile.lock
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
libhoney (1.14.4)
|
5
|
-
addressable (~> 2.0)
|
6
|
-
http (>= 2.0, < 5.0)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: https://rubygems.org/
|
10
|
-
specs:
|
11
|
-
addressable (2.6.0)
|
12
|
-
public_suffix (>= 2.0.2, < 4.0)
|
13
|
-
ast (2.4.0)
|
14
|
-
backports (3.15.0)
|
15
|
-
bump (0.8.0)
|
16
|
-
crack (0.4.3)
|
17
|
-
safe_yaml (~> 1.0.0)
|
18
|
-
domain_name (0.5.20190701)
|
19
|
-
unf (>= 0.0.5, < 1.0.0)
|
20
|
-
ffi (1.12.1)
|
21
|
-
ffi-compiler (1.0.1)
|
22
|
-
ffi (>= 1.0.0)
|
23
|
-
rake
|
24
|
-
hashdiff (1.0.0)
|
25
|
-
http (4.2.0)
|
26
|
-
addressable (~> 2.3)
|
27
|
-
http-cookie (~> 1.0)
|
28
|
-
http-form_data (~> 2.0)
|
29
|
-
http-parser (~> 1.2.0)
|
30
|
-
http-cookie (1.0.3)
|
31
|
-
domain_name (~> 0.5)
|
32
|
-
http-form_data (2.1.1)
|
33
|
-
http-parser (1.2.1)
|
34
|
-
ffi-compiler (>= 1.0, < 2.0)
|
35
|
-
jaro_winkler (1.5.3)
|
36
|
-
minitest (5.11.3)
|
37
|
-
multi_json (1.13.1)
|
38
|
-
mustermann (1.0.3)
|
39
|
-
parallel (1.17.0)
|
40
|
-
parser (2.6.3.0)
|
41
|
-
ast (~> 2.4.0)
|
42
|
-
public_suffix (3.1.1)
|
43
|
-
rack (2.0.8)
|
44
|
-
rack-protection (2.0.5)
|
45
|
-
rack
|
46
|
-
rainbow (3.0.0)
|
47
|
-
rake (12.3.3)
|
48
|
-
rubocop (0.68.1)
|
49
|
-
jaro_winkler (~> 1.5.1)
|
50
|
-
parallel (~> 1.10)
|
51
|
-
parser (>= 2.5, != 2.5.1.1)
|
52
|
-
rainbow (>= 2.2.2, < 4.0)
|
53
|
-
ruby-progressbar (~> 1.7)
|
54
|
-
unicode-display_width (>= 1.4.0, < 1.6)
|
55
|
-
ruby-progressbar (1.10.1)
|
56
|
-
safe_yaml (1.0.5)
|
57
|
-
sinatra (2.0.5)
|
58
|
-
mustermann (~> 1.0)
|
59
|
-
rack (~> 2.0)
|
60
|
-
rack-protection (= 2.0.5)
|
61
|
-
tilt (~> 2.0)
|
62
|
-
sinatra-contrib (2.0.5)
|
63
|
-
backports (>= 2.8.2)
|
64
|
-
multi_json
|
65
|
-
mustermann (~> 1.0)
|
66
|
-
rack-protection (= 2.0.5)
|
67
|
-
sinatra (= 2.0.5)
|
68
|
-
tilt (>= 1.3, < 3)
|
69
|
-
spy (1.0.0)
|
70
|
-
tilt (2.0.9)
|
71
|
-
unf (0.1.4)
|
72
|
-
unf_ext
|
73
|
-
unf_ext (0.0.7.6)
|
74
|
-
unicode-display_width (1.5.0)
|
75
|
-
webmock (3.6.2)
|
76
|
-
addressable (>= 2.3.6)
|
77
|
-
crack (>= 0.3.2)
|
78
|
-
hashdiff (>= 0.4.0, < 2.0.0)
|
79
|
-
yard (0.9.20)
|
80
|
-
yardstick (0.9.9)
|
81
|
-
yard (~> 0.8, >= 0.8.7.2)
|
82
|
-
|
83
|
-
PLATFORMS
|
84
|
-
ruby
|
85
|
-
|
86
|
-
DEPENDENCIES
|
87
|
-
bump (~> 0.5)
|
88
|
-
bundler
|
89
|
-
libhoney!
|
90
|
-
minitest (~> 5.0)
|
91
|
-
rake (~> 12.3)
|
92
|
-
rubocop (< 0.69)
|
93
|
-
sinatra
|
94
|
-
sinatra-contrib
|
95
|
-
spy
|
96
|
-
webmock (~> 3.4)
|
97
|
-
yard
|
98
|
-
yardstick (~> 0.9)
|
99
|
-
|
100
|
-
BUNDLED WITH
|
101
|
-
1.17.3
|