activerecord-honeycomb 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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