activerecord-honeycomb 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -0
- data/lib/active_record/connection_adapters/honeycomb_adapter.rb +29 -14
- data/lib/active_record/honeycomb/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2bc4eab86d0578bcb7c93ef32c30c4b49b68a8b5140611253d9cc45572a1f66
|
4
|
+
data.tar.gz: 8c597b10ed77363ea930a794ccbf9f7bb91f93b1782e42671bcf115b7983b7b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5320563ca868a56c0245042e13e4a0cd5eb0321e35f60cf06ab711571d6ac1ac49683f33ce2fb0675ff4de4f750d652dc5e783200f7ea492858b0a2f8bd85acd
|
7
|
+
data.tar.gz: d65ea71e23b8a0cc71d1e4579687dac3393ec11a7d3ec38213d0876ed0e94ae417adc527a68fc1dd8ed696f7cc4e3a52ee1ddf44ccb0c1fe80861da6b7b7d06f
|
data/README.md
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# Honeycomb Tracing for ActiveRecord
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/honeycombio/activerecord-honeycomb.svg?branch=master)](https://travis-ci.org/honeycombio/activerecord-honeycomb)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/activerecord-honeycomb.svg)](https://badge.fury.io/rb/activerecord-honeycomb)
|
5
|
+
|
6
|
+
This package makes it easy to instrument your ActiveRecord queries in your ruby application to send useful events to [Honeycomb](https://www.honeycomb.io), a service for debugging your software in production.
|
7
|
+
- [Usage and Examples](https://docs.honeycomb.io/getting-data-in/beelines/ruby-beeline/)
|
8
|
+
|
9
|
+
Sign up for a [Honeycomb
|
10
|
+
trial](https://ui.honeycomb.io/signup) to obtain an API key before starting.
|
11
|
+
|
12
|
+
## Compatible with
|
13
|
+
|
14
|
+
Requires Ruby version 2.2 or later
|
15
|
+
|
16
|
+
ActiveRecord 4 or later
|
17
|
+
|
18
|
+
## Get in touch
|
19
|
+
|
20
|
+
Please reach out to [support@honeycomb.io](mailto:support@honeycomb.io) or ping
|
21
|
+
us with the chat bubble on [our website](https://www.honeycomb.io) for any
|
22
|
+
assistance. We also welcome [bug reports](https://github.com/honeycombio/activerecord-honeycomb/issues).
|
23
|
+
|
24
|
+
## Contributions
|
25
|
+
|
26
|
+
Features, bug fixes and other changes to `activerecord-honeycomb` are gladly accepted. Please
|
27
|
+
open issues or a pull request with your change. Remember to add your name to the
|
28
|
+
CONTRIBUTORS file!
|
29
|
+
|
30
|
+
All contributions will be released under the Apache License 2.0.
|
@@ -69,7 +69,7 @@ module ActiveRecord
|
|
69
69
|
|
70
70
|
def execute(sql, name = nil, *args)
|
71
71
|
sending_honeycomb_event(sql, name, []) do |event|
|
72
|
-
|
72
|
+
with_tracing_if_available(event) do
|
73
73
|
super
|
74
74
|
end
|
75
75
|
end
|
@@ -77,7 +77,7 @@ module ActiveRecord
|
|
77
77
|
|
78
78
|
def exec_query(sql, name = 'SQL', binds = [], *args)
|
79
79
|
sending_honeycomb_event(sql, name, binds) do |event|
|
80
|
-
|
80
|
+
with_tracing_if_available(event) do
|
81
81
|
super
|
82
82
|
end
|
83
83
|
end
|
@@ -85,7 +85,7 @@ module ActiveRecord
|
|
85
85
|
|
86
86
|
def exec_insert(sql, name, binds, *args)
|
87
87
|
sending_honeycomb_event(sql, name, binds) do |event|
|
88
|
-
|
88
|
+
with_tracing_if_available(event) do
|
89
89
|
super
|
90
90
|
end
|
91
91
|
end
|
@@ -93,7 +93,7 @@ module ActiveRecord
|
|
93
93
|
|
94
94
|
def exec_delete(sql, name, binds = [], *args)
|
95
95
|
sending_honeycomb_event(sql, name, binds) do |event|
|
96
|
-
|
96
|
+
with_tracing_if_available(event) do
|
97
97
|
super
|
98
98
|
end
|
99
99
|
end
|
@@ -101,7 +101,7 @@ module ActiveRecord
|
|
101
101
|
|
102
102
|
def exec_update(sql, name, binds = [], *args)
|
103
103
|
sending_honeycomb_event(sql, name, binds) do |event|
|
104
|
-
|
104
|
+
with_tracing_if_available(event) do
|
105
105
|
super
|
106
106
|
end
|
107
107
|
end
|
@@ -159,17 +159,32 @@ module ActiveRecord
|
|
159
159
|
sql.sub(/\s+.*/, '').upcase
|
160
160
|
end
|
161
161
|
|
162
|
-
def
|
163
|
-
return
|
162
|
+
def with_tracing_if_available(event)
|
163
|
+
# return if we are not using the ruby beeline
|
164
|
+
return yield unless event && defined?(::Honeycomb)
|
164
165
|
|
165
|
-
|
166
|
+
# beeline version <= 0.5.0
|
167
|
+
if ::Honeycomb.respond_to? :trace_id
|
168
|
+
trace_id = ::Honeycomb.trace_id
|
169
|
+
event.add_field 'trace.trace_id', trace_id if trace_id
|
170
|
+
span_id = SecureRandom.uuid
|
171
|
+
event.add_field 'trace.span_id', span_id
|
166
172
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
+
::Honeycomb.with_span_id(span_id) do |parent_span_id|
|
174
|
+
event.add_field 'trace.parent_id', parent_span_id
|
175
|
+
yield
|
176
|
+
end
|
177
|
+
# beeline version > 0.5.0
|
178
|
+
elsif ::Honeycomb.respond_to? :span_for_existing_event
|
179
|
+
::Honeycomb.span_for_existing_event(
|
180
|
+
event,
|
181
|
+
name: nil, # leave blank since we set it above
|
182
|
+
type: 'db',
|
183
|
+
) do
|
184
|
+
yield
|
185
|
+
end
|
186
|
+
# fallback if we don't detect any known beeline tracing methods
|
187
|
+
else
|
173
188
|
yield
|
174
189
|
end
|
175
190
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-honeycomb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Stokes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: libhoney
|
@@ -143,6 +143,7 @@ executables: []
|
|
143
143
|
extensions: []
|
144
144
|
extra_rdoc_files: []
|
145
145
|
files:
|
146
|
+
- README.md
|
146
147
|
- lib/active_record/connection_adapters/honeycomb_adapter.rb
|
147
148
|
- lib/active_record/honeycomb.rb
|
148
149
|
- lib/active_record/honeycomb/version.rb
|