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
         |