Sha256: e3d7af04a8a342e62720665554783f3e5cf6b3b08266b09653ac3746deb52bfa

Contents?: true

Size: 1.65 KB

Versions: 13

Compression:

Stored size: 1.65 KB

Contents

module Sunspot
  module Rails
    module SolrLogging
      class <<self
        def included(base)
          base.module_eval { alias_method_chain(:request, :rails_logging) }
        end
      end

      def request_with_rails_logging(path, params={}, *extra)

        # Set up logging text.
        body = (params.nil? || params.empty?) ? extra.first : params.inspect
        action = path[1..-1].capitalize
        if body == "<commit/>"
          action = 'Commit'
          body = ''
        end
        body = body[0, 800] + '...' if body.length > 800

        # Make request and log.
        response = nil
        begin
          ms = Benchmark.ms do
            response = request_without_rails_logging(path, params, *extra)
          end
          log_name = 'Solr %s (%.1fms)' % [action, ms]
          ::Rails.logger.debug(format_log_entry(log_name, body))
        rescue Exception => e
          log_name = 'Solr %s (Error)' % [action]
          ::Rails.logger.error(format_log_entry(log_name, body))
          raise e
        end

        response
      end

      private

      def format_log_entry(message, dump = nil)
        if ActiveRecord::Base.colorize_logging
          message_color, dump_color = "4;32;1", "0;1"
          log_entry = "  \e[#{message_color}m#{message}\e[0m   "
          log_entry << "\e[#{dump_color}m%#{String === dump ? 's' : 'p'}\e[0m" % dump if dump
          log_entry
        else
          "%s  %s" % [message, dump]
        end
      end
    end
  end
end

begin
  RSolr::Client.module_eval { include(Sunspot::Rails::SolrLogging) }
rescue NameError # RSolr 0.9.6
  RSolr::Connection::Base.module_eval { include(Sunspot::Rails::SolrLogging) }
end

Version data entries

13 entries across 13 versions & 4 rubygems

Version Path
ruben_sunspot_rails-1.1.4 lib/sunspot/rails/solr_logging.rb
ruben_sunspot_rails-1.1.3 lib/sunspot/rails/solr_logging.rb
ruben_sunspot_rails-1.1.2 lib/sunspot/rails/solr_logging.rb
ruben_sunspot_rails-1.1.1 lib/sunspot/rails/solr_logging.rb
ruben_sunspot_rails-1.1.0 lib/sunspot/rails/solr_logging.rb
nuatt_sunspot_rails-1.1.0.3 lib/sunspot/rails/solr_logging.rb
robsharp-sunspot_rails-1.1.0.2 lib/sunspot/rails/solr_logging.rb
sunspot_rails-1.1.0 lib/sunspot/rails/solr_logging.rb
sunspot_rails-1.0.5 lib/sunspot/rails/solr_logging.rb
sunspot_rails-1.0.4 lib/sunspot/rails/solr_logging.rb
sunspot_rails-1.0.3 lib/sunspot/rails/solr_logging.rb
sunspot_rails-1.0.2 lib/sunspot/rails/solr_logging.rb
sunspot_rails-1.0.1 lib/sunspot/rails/solr_logging.rb