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: 730cba378624d817b73d3603ebee14a8fc3ba45229a1a737fc12abf64de48e39
4
- data.tar.gz: fc04c3338cc58b78783ff713265e469d5e0a8814b4a36935ac0013fe396d3482
3
+ metadata.gz: 1686f5b56b0a372f7af11190a4206f6aa69e2e88efc761306db4de3bc96340ca
4
+ data.tar.gz: 14dcd90cb80a06bf4c4d8eb30ae8bb75af36bc5a92a2403cd05004bc9ea7b1d8
5
5
  SHA512:
6
- metadata.gz: 3fcf4f1174030144183130cb130879f8be8fe87a7a51f343976d621c7a9e3a75d09861b3b89f5a4e6940759a59008d3329090fc59b4c3ba8d9ff8bd71bd990af
7
- data.tar.gz: 2c4cfd32d8eb4f27e74829c085d7460f52dfb7aafaa916ab5a95975ee934f2aae47a22b495a21d81ffadc3aa08c229634241507b456b80ab73763963eadc6bcd
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
- client = config[:honeycomb_client]
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
- def self.included(klazz)
31
- # TODO ugh clean this up
32
- @_honeycomb ||= begin
33
- if klazz.respond_to? :honeycomb_client, true # include private
34
- klazz.send(:honeycomb_client)
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 "Can't work without magic global Honeycomb.client at the moment"
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
- klazz.class_exec(@_honeycomb) do |honeycomb_|
42
- define_method(:builder) do
43
- honeycomb_.builder.
44
- add(
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
@@ -1,6 +1,6 @@
1
1
  module ActiveRecord
2
2
  module Honeycomb
3
3
  GEM_NAME = 'activerecord-honeycomb'
4
- VERSION = '0.2.1'
4
+ VERSION = '0.2.2'
5
5
  end
6
6
  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
- rescue Gem::LoadError
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.1
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-05-24 00:00:00.000000000 Z
11
+ date: 2018-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: libhoney