activerecord-honeycomb 0.2.4 → 0.3.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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5513e1bf298b293e26b56aeaeb4d01d1f30f1f886523af3d7207c94c3649b191
|
4
|
+
data.tar.gz: 44d8d740273a31a1c0474f5225ee6879a43afa903fbfdf7854e6a6c5372eb1e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4c0dc2140357e734883e1da31c64d13917b1d8e8cb45f7438b524ebfd6fd7918874e2324b7b8296c0222e02a21465981f3c0114acada918f3c62daae1e1b9e0
|
7
|
+
data.tar.gz: 8f0bfed8173a460fe3fe505191aeb7b1236b55a26e127b7b911675e94d19493347f65bf2381f1964ad9a0312b3882a082eec191555199057176050ac5fc41ce4
|
@@ -21,8 +21,10 @@ module ActiveRecord
|
|
21
21
|
real_connection = ::ActiveRecord::Base.send(spec.adapter_method, spec.config)
|
22
22
|
logger.debug "#{log_prefix} obtained real database connection: #{real_connection.class.name}" if logger
|
23
23
|
|
24
|
-
|
25
|
-
real_connection.class
|
24
|
+
if real_connection.class.ancestors.include? ConnectionAdapters::HoneycombAdapter
|
25
|
+
logger.debug "#{log_prefix} found #{real_connection.class} with #{ConnectionAdapters::HoneycombAdapter} already included"
|
26
|
+
else
|
27
|
+
real_connection.class.prepend ConnectionAdapters::HoneycombAdapter
|
26
28
|
end
|
27
29
|
|
28
30
|
real_connection
|
@@ -36,7 +38,7 @@ module ActiveRecord
|
|
36
38
|
attr_reader :builder
|
37
39
|
attr_accessor :logger
|
38
40
|
|
39
|
-
def
|
41
|
+
def prepended(klazz)
|
40
42
|
debug "included into #{klazz.name}"
|
41
43
|
|
42
44
|
if @client
|
@@ -65,32 +67,77 @@ module ActiveRecord
|
|
65
67
|
|
66
68
|
delegate :builder, to: self
|
67
69
|
|
68
|
-
def execute(sql, *args)
|
69
|
-
sending_honeycomb_event do |event|
|
70
|
-
event
|
70
|
+
def execute(sql, name = nil, *args)
|
71
|
+
sending_honeycomb_event(sql, name, []) do |event|
|
72
|
+
adding_span_metadata_if_available(event) do
|
73
|
+
super
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
71
77
|
|
72
|
-
|
78
|
+
def exec_query(sql, name = 'SQL', binds = [], *args)
|
79
|
+
sending_honeycomb_event(sql, name, binds) do |event|
|
80
|
+
adding_span_metadata_if_available(event) do
|
73
81
|
super
|
74
82
|
end
|
75
83
|
end
|
76
84
|
end
|
77
85
|
|
78
|
-
def
|
79
|
-
sending_honeycomb_event do |event|
|
80
|
-
event
|
81
|
-
|
86
|
+
def exec_insert(sql, name, binds, *args)
|
87
|
+
sending_honeycomb_event(sql, name, binds) do |event|
|
88
|
+
adding_span_metadata_if_available(event) do
|
89
|
+
super
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
82
93
|
|
83
|
-
|
94
|
+
def exec_delete(sql, name, binds = [], *args)
|
95
|
+
sending_honeycomb_event(sql, name, binds) do |event|
|
96
|
+
adding_span_metadata_if_available(event) do
|
97
|
+
super
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def exec_update(sql, name, binds = [], *args)
|
103
|
+
sending_honeycomb_event(sql, name, binds) do |event|
|
104
|
+
adding_span_metadata_if_available(event) do
|
84
105
|
super
|
85
106
|
end
|
86
107
|
end
|
87
108
|
end
|
88
109
|
|
89
110
|
private
|
90
|
-
def sending_honeycomb_event
|
91
|
-
|
111
|
+
def sending_honeycomb_event(sql, name, binds)
|
112
|
+
# Some adapters have some of their exec* methods call each other,
|
113
|
+
# e.g mysql2 has exec_query call execute (via execute_and_free).
|
114
|
+
# We don't want to send two events for the same query, so we screen out
|
115
|
+
# multiple invocations of this wrapper method in the same call tree.
|
116
|
+
if !defined?(@honeycomb_event_depth)
|
117
|
+
@honeycomb_event_depth = 0
|
118
|
+
end
|
119
|
+
if @honeycomb_event_depth < 1
|
120
|
+
@honeycomb_event_depth = 1
|
121
|
+
event = builder.event
|
122
|
+
|
123
|
+
event.add_field 'db.sql', sql
|
124
|
+
event.add_field 'name', name || query_name(sql)
|
125
|
+
|
126
|
+
binds.each do |bind|
|
127
|
+
# ActiveRecord 5
|
128
|
+
if bind.respond_to?(:value) && bind.respond_to?(:name)
|
129
|
+
event.add_field "db.params.#{bind.name}", bind.value
|
130
|
+
else # ActiveRecord 4
|
131
|
+
column, value = bind
|
132
|
+
event.add_field "db.params.#{column.name}", value
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
start = Time.now
|
137
|
+
else
|
138
|
+
@honeycomb_event_depth += 1
|
139
|
+
end
|
92
140
|
|
93
|
-
start = Time.now
|
94
141
|
yield event
|
95
142
|
rescue Exception => e
|
96
143
|
if event
|
@@ -99,6 +146,7 @@ module ActiveRecord
|
|
99
146
|
end
|
100
147
|
raise
|
101
148
|
ensure
|
149
|
+
@honeycomb_event_depth -= 1
|
102
150
|
if start && event
|
103
151
|
finish = Time.now
|
104
152
|
duration = finish - start
|
@@ -111,8 +159,8 @@ module ActiveRecord
|
|
111
159
|
sql.sub(/\s+.*/, '').upcase
|
112
160
|
end
|
113
161
|
|
114
|
-
def adding_span_metadata_if_available(event
|
115
|
-
return yield unless defined?(::Honeycomb.trace_id)
|
162
|
+
def adding_span_metadata_if_available(event)
|
163
|
+
return yield unless event && defined?(::Honeycomb.trace_id)
|
116
164
|
|
117
165
|
trace_id = ::Honeycomb.trace_id
|
118
166
|
|
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.3.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
|
+
date: 2018-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: libhoney
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '4'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bump
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: mysql2
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: pg
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +108,20 @@ dependencies:
|
|
94
108
|
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: sqlite3
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: yard
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,8 +136,7 @@ dependencies:
|
|
108
136
|
- - ">="
|
109
137
|
- !ruby/object:Gem::Version
|
110
138
|
version: '0'
|
111
|
-
description:
|
112
|
-
TO DO *is* a description
|
139
|
+
description: " TO DO *is* a description\n"
|
113
140
|
email:
|
114
141
|
- support@honeycomb.io
|
115
142
|
executables: []
|
@@ -124,7 +151,7 @@ files:
|
|
124
151
|
- lib/activerecord/honeycomb.rb
|
125
152
|
homepage: https://github.com/honeycombio/activerecord-honeycomb
|
126
153
|
licenses:
|
127
|
-
-
|
154
|
+
- Apache-2.0
|
128
155
|
metadata: {}
|
129
156
|
post_install_message:
|
130
157
|
rdoc_options: []
|
@@ -134,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
134
161
|
requirements:
|
135
162
|
- - ">="
|
136
163
|
- !ruby/object:Gem::Version
|
137
|
-
version:
|
164
|
+
version: 2.2.0
|
138
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
166
|
requirements:
|
140
167
|
- - ">="
|