activerecord-honeycomb 0.2.1 → 0.2.2
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: 1686f5b56b0a372f7af11190a4206f6aa69e2e88efc761306db4de3bc96340ca
|
4
|
+
data.tar.gz: 14dcd90cb80a06bf4c4d8eb30ae8bb75af36bc5a92a2403cd05004bc9ea7b1d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 682f11006a356983eba992dd7fe89459f3765b4ec645732be97d20a252bf5ffd42ab7920dee3e9ecbbfebd1d9773106363608098313f7bf3d52e4c2afa2f5016
|
7
|
+
data.tar.gz: 31a130980f993521081dc276e3d622bc9e62fddba25db982d1a53e231086aaafa1053b4c99aeef8e2ac30c73a2a0d1d160898b07eba77e7a53f1a3716e1cf4f4
|
@@ -4,20 +4,24 @@ require 'securerandom'
|
|
4
4
|
module ActiveRecord
|
5
5
|
module ConnectionHandling
|
6
6
|
def honeycomb_connection(config)
|
7
|
+
log_prefix = "ActiveRecord::ConnectionHandling#honeycomb_connection"
|
8
|
+
|
7
9
|
real_config = config.merge(adapter: config.fetch(:real_adapter))
|
8
10
|
|
9
|
-
|
11
|
+
logger = config[:honeycomb_logger]
|
12
|
+
logger ||= ::Honeycomb.logger if defined?(::Honeycomb.logger)
|
13
|
+
ConnectionAdapters::HoneycombAdapter.logger ||= logger
|
14
|
+
|
15
|
+
ConnectionAdapters::HoneycombAdapter.client ||= config[:honeycomb_client]
|
10
16
|
|
17
|
+
logger.debug "#{log_prefix} resolving real database config" if logger
|
11
18
|
resolver = ConnectionAdapters::ConnectionSpecification::Resolver.new(Base.configurations)
|
12
19
|
spec = resolver.spec(real_config)
|
13
20
|
|
14
21
|
real_connection = ::ActiveRecord::Base.send(spec.adapter_method, spec.config)
|
22
|
+
logger.debug "#{log_prefix} obtained real database connection: #{real_connection.class.name}" if logger
|
15
23
|
|
16
24
|
unless real_connection.class.ancestors.include? ConnectionAdapters::HoneycombAdapter
|
17
|
-
real_connection.class.extend(Module.new do
|
18
|
-
private
|
19
|
-
define_method(:honeycomb_client) { client }
|
20
|
-
end) if client
|
21
25
|
real_connection.class.include ConnectionAdapters::HoneycombAdapter
|
22
26
|
end
|
23
27
|
|
@@ -27,30 +31,40 @@ module ActiveRecord
|
|
27
31
|
|
28
32
|
module ConnectionAdapters
|
29
33
|
module HoneycombAdapter
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
class << self
|
35
|
+
attr_accessor :client
|
36
|
+
attr_reader :builder
|
37
|
+
attr_accessor :logger
|
38
|
+
|
39
|
+
def included(klazz)
|
40
|
+
debug "included into #{klazz.name}"
|
41
|
+
|
42
|
+
if @client
|
43
|
+
debug "configured with #{@client.class.name}"
|
35
44
|
elsif defined?(::Honeycomb.client)
|
36
|
-
::Honeycomb.client
|
45
|
+
debug "initialized with #{::Honeycomb.client.class.name} from honeycomb-beeline"
|
46
|
+
@client = ::Honeycomb.client
|
37
47
|
else
|
38
|
-
raise "
|
48
|
+
raise "Please ensure your database config sets :honeycomb_client in order to use #{self.name} (try ActiveRecord::Honeycomb.munge_config)"
|
39
49
|
end
|
50
|
+
|
51
|
+
@builder = @client.builder.add(
|
52
|
+
'type' => 'db',
|
53
|
+
'meta.package' => 'activerecord',
|
54
|
+
'meta.package_version' => ActiveRecord::VERSION::STRING,
|
55
|
+
)
|
56
|
+
|
57
|
+
super
|
40
58
|
end
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
'type' => 'db',
|
46
|
-
'meta.package' => 'activerecord',
|
47
|
-
'meta.package_version' => ActiveRecord::VERSION::STRING,
|
48
|
-
)
|
49
|
-
end
|
59
|
+
|
60
|
+
private
|
61
|
+
def debug(msg)
|
62
|
+
@logger.debug("#{self.name}: #{msg}") if @logger
|
50
63
|
end
|
51
|
-
super
|
52
64
|
end
|
53
65
|
|
66
|
+
delegate :builder, to: self
|
67
|
+
|
54
68
|
def execute(sql, *args)
|
55
69
|
sending_honeycomb_event do |event|
|
56
70
|
event.add_field 'db.sql', sql
|
@@ -74,7 +88,6 @@ module ActiveRecord
|
|
74
88
|
|
75
89
|
private
|
76
90
|
def sending_honeycomb_event
|
77
|
-
raise 'something went horribly wrong' unless builder # TODO
|
78
91
|
event = builder.event
|
79
92
|
|
80
93
|
start = Time.now
|
@@ -9,6 +9,7 @@ module ActiveRecord
|
|
9
9
|
)
|
10
10
|
munged['honeycomb_client'] = client if client
|
11
11
|
munged['honeycomb_logger'] = logger if logger
|
12
|
+
logger.debug "#{self.name}: injected HoneycombAdapter config, original adapter was #{munged['real_adapter'].inspect}" if logger
|
12
13
|
munged
|
13
14
|
end
|
14
15
|
end
|
@@ -2,9 +2,12 @@ module ActiveRecord
|
|
2
2
|
module Honeycomb
|
3
3
|
module AutoInstall
|
4
4
|
class << self
|
5
|
-
def available?(
|
5
|
+
def available?(logger: nil)
|
6
6
|
gem 'activerecord'
|
7
|
-
|
7
|
+
logger.debug "#{self.name}: detected ActiveRecord, okay to autoinitialise" if logger
|
8
|
+
true
|
9
|
+
rescue Gem::LoadError => e
|
10
|
+
logger.debug "Didn't detect ActiveRecord (#{e.class}: #{e.message}), not autoinitialising activerecord-honeycomb" if logger
|
8
11
|
false
|
9
12
|
end
|
10
13
|
|
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.2.
|
4
|
+
version: 0.2.2
|
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-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: libhoney
|