Commit 5a9754549ca44c0056bdd2bcae3dc16522fa8a97

Authored by Andrew Kane
1 parent 77fdf23d

Moved log subscriber to separate file [skip ci]

lib/searchkick.rb
... ... @@ -23,7 +23,10 @@ require "searchkick/version"
23 23  
24 24 # integrations
25 25 require "searchkick/railtie" if defined?(Rails)
26   -require "searchkick/logging" if defined?(ActiveSupport::Notifications)
  26 +if defined?(ActiveSupport::Notifications)
  27 + require "searchkick/logging"
  28 + require "searchkick/log_subscriber"
  29 +end
27 30  
28 31 module Searchkick
29 32 # requires faraday
... ...
lib/searchkick/log_subscriber.rb 0 → 100644
... ... @@ -0,0 +1,59 @@
  1 +module Searchkick
  2 + # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/log_subscriber.rb
  3 + class LogSubscriber < ActiveSupport::LogSubscriber
  4 + def self.runtime=(value)
  5 + Thread.current[:searchkick_runtime] = value
  6 + end
  7 +
  8 + def self.runtime
  9 + Thread.current[:searchkick_runtime] ||= 0
  10 + end
  11 +
  12 + def self.reset_runtime
  13 + rt = runtime
  14 + self.runtime = 0
  15 + rt
  16 + end
  17 +
  18 + def search(event)
  19 + self.class.runtime += event.duration
  20 + return unless logger.debug?
  21 +
  22 + payload = event.payload
  23 + name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
  24 +
  25 + index = payload[:query][:index].is_a?(Array) ? payload[:query][:index].join(",") : payload[:query][:index]
  26 + type = payload[:query][:type]
  27 + request_params = payload[:query].except(:index, :type, :body)
  28 +
  29 + params = []
  30 + request_params.each do |k, v|
  31 + params << "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"
  32 + end
  33 +
  34 + debug " #{color(name, YELLOW, true)} #{index}#{type ? "/#{type.join(',')}" : ''}/_search#{params.any? ? '?' + params.join('&') : nil} #{payload[:query][:body].to_json}"
  35 + end
  36 +
  37 + def request(event)
  38 + self.class.runtime += event.duration
  39 + return unless logger.debug?
  40 +
  41 + payload = event.payload
  42 + name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
  43 +
  44 + debug " #{color(name, YELLOW, true)} #{payload.except(:name).to_json}"
  45 + end
  46 +
  47 + def multi_search(event)
  48 + self.class.runtime += event.duration
  49 + return unless logger.debug?
  50 +
  51 + payload = event.payload
  52 + name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
  53 +
  54 + debug " #{color(name, YELLOW, true)} _msearch #{payload[:body]}"
  55 + end
  56 + end
  57 +end
  58 +
  59 +Searchkick::LogSubscriber.attach_to :searchkick
... ...
lib/searchkick/logging.rb
... ... @@ -140,62 +140,6 @@ module Searchkick
140 140 end
141 141 end
142 142  
143   - # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/log_subscriber.rb
144   - class LogSubscriber < ActiveSupport::LogSubscriber
145   - def self.runtime=(value)
146   - Thread.current[:searchkick_runtime] = value
147   - end
148   -
149   - def self.runtime
150   - Thread.current[:searchkick_runtime] ||= 0
151   - end
152   -
153   - def self.reset_runtime
154   - rt = runtime
155   - self.runtime = 0
156   - rt
157   - end
158   -
159   - def search(event)
160   - self.class.runtime += event.duration
161   - return unless logger.debug?
162   -
163   - payload = event.payload
164   - name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
165   -
166   - index = payload[:query][:index].is_a?(Array) ? payload[:query][:index].join(",") : payload[:query][:index]
167   - type = payload[:query][:type]
168   - request_params = payload[:query].except(:index, :type, :body)
169   -
170   - params = []
171   - request_params.each do |k, v|
172   - params << "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"
173   - end
174   -
175   - debug " #{color(name, YELLOW, true)} #{index}#{type ? "/#{type.join(',')}" : ''}/_search#{params.any? ? '?' + params.join('&') : nil} #{payload[:query][:body].to_json}"
176   - end
177   -
178   - def request(event)
179   - self.class.runtime += event.duration
180   - return unless logger.debug?
181   -
182   - payload = event.payload
183   - name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
184   -
185   - debug " #{color(name, YELLOW, true)} #{payload.except(:name).to_json}"
186   - end
187   -
188   - def multi_search(event)
189   - self.class.runtime += event.duration
190   - return unless logger.debug?
191   -
192   - payload = event.payload
193   - name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
194   -
195   - debug " #{color(name, YELLOW, true)} _msearch #{payload[:body]}"
196   - end
197   - end
198   -
199 143 # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/railties/controller_runtime.rb
200 144 module ControllerRuntime
201 145 extend ActiveSupport::Concern
... ... @@ -240,7 +184,6 @@ Searchkick::Query.prepend(Searchkick::QueryWithInstrumentation)
240 184 Searchkick::Index.prepend(Searchkick::IndexWithInstrumentation)
241 185 Searchkick::Indexer.prepend(Searchkick::IndexerWithInstrumentation)
242 186 Searchkick.singleton_class.prepend(Searchkick::SearchkickWithInstrumentation)
243   -Searchkick::LogSubscriber.attach_to :searchkick
244 187 ActiveSupport.on_load(:action_controller) do
245 188 include Searchkick::ControllerRuntime
246 189 end
... ...