activerecord-honeycomb 0.3.0 → 0.4.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/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
|
+
[](https://travis-ci.org/honeycombio/activerecord-honeycomb)
|
4
|
+
[](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
|