Sha256: c59537f9324c17017f111d115261244e1c37208d0e8cb26ea01419466d7ee6db

Contents?: true

Size: 1.64 KB

Versions: 11

Compression:

Stored size: 1.64 KB

Contents

# based on https://gist.github.com/mnutt/566725
module Searchkick
  class LogSubscriber < ActiveSupport::LogSubscriber
    def self.runtime=(value)
      Thread.current[:searchkick_runtime] = value
    end

    def self.runtime
      Thread.current[:searchkick_runtime] ||= 0
    end

    def self.reset_runtime
      rt = runtime
      self.runtime = 0
      rt
    end

    def search(event)
      self.class.runtime += event.duration
      return unless logger.debug?

      payload = event.payload
      name = "#{payload[:name]} (#{event.duration.round(1)}ms)"

      index = payload[:query][:index].is_a?(Array) ? payload[:query][:index].join(",") : payload[:query][:index]
      type = payload[:query][:type]
      request_params = payload[:query].except(:index, :type, :body)

      params = []
      request_params.each do |k, v|
        params << "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"
      end

      debug "  #{color(name, YELLOW, true)}  #{index}#{type ? "/#{type.join(',')}" : ''}/_search#{params.any? ? '?' + params.join('&') : nil} #{payload[:query][:body].to_json}"
    end

    def request(event)
      self.class.runtime += event.duration
      return unless logger.debug?

      payload = event.payload
      name = "#{payload[:name]} (#{event.duration.round(1)}ms)"

      debug "  #{color(name, YELLOW, true)}  #{payload.except(:name).to_json}"
    end

    def multi_search(event)
      self.class.runtime += event.duration
      return unless logger.debug?

      payload = event.payload
      name = "#{payload[:name]} (#{event.duration.round(1)}ms)"

      debug "  #{color(name, YELLOW, true)}  _msearch #{payload[:body]}"
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
searchkick-5.2.1 lib/searchkick/log_subscriber.rb
searchkick-5.2.0 lib/searchkick/log_subscriber.rb
searchkick-5.1.2 lib/searchkick/log_subscriber.rb
searchkick-5.1.1 lib/searchkick/log_subscriber.rb
searchkick-5.1.0 lib/searchkick/log_subscriber.rb
searchkick-5.0.5 lib/searchkick/log_subscriber.rb
searchkick-5.0.4 lib/searchkick/log_subscriber.rb
searchkick-5.0.3 lib/searchkick/log_subscriber.rb
searchkick-5.0.2 lib/searchkick/log_subscriber.rb
searchkick-5.0.1 lib/searchkick/log_subscriber.rb
searchkick-5.0.0 lib/searchkick/log_subscriber.rb