Sha256: ba67131e2336b150fff9502f08a8419bf7f7eba14d169d1879c356cf91308ff2

Contents?: true

Size: 1.44 KB

Versions: 21

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require 'active_support/core_ext/module/attr_internal'

module ElasticsearchRecord
  module Instrumentation
    # Hooks into ActionController to display ElasticsearchRecord runtime
    # @see https://github.com/rails/rails/blob/master/activerecord/lib/active_record/railties/controller_runtime.rb
    #
    module ControllerRuntime
      extend ActiveSupport::Concern

      protected

      attr_internal :elasticsearch_record_runtime

      def cleanup_view_runtime
        elasticsearch_rt_before_render    = ElasticsearchRecord::Instrumentation::LogSubscriber.reset_runtime
        runtime                           = super
        elasticsearch_rt_after_render     = ElasticsearchRecord::Instrumentation::LogSubscriber.reset_runtime
        self.elasticsearch_record_runtime = elasticsearch_rt_before_render + elasticsearch_rt_after_render
        runtime - elasticsearch_rt_after_render
      end

      def append_info_to_payload(payload)
        super
        payload[:elasticsearch_record_runtime] = (elasticsearch_record_runtime || 0) + ElasticsearchRecord::Instrumentation::LogSubscriber.reset_runtime
      end

      module ClassMethods
        def log_process_action(payload)
          messages, elasticsearch_runtime = super, payload[:elasticsearch_record_runtime]
          messages << ("ElasticsearchRecord: %.1fms" % elasticsearch_runtime.to_f) if elasticsearch_runtime
          messages
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
elasticsearch_record-1.8.2 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.8.0 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.7.2 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.7.1 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.7.0 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.6.0 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.5.3 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.5.2 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.5.1 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.5.0 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.4.0 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.3.1 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.3.0 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.2.4 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.2.3 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.2.1 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.2.0 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.1.0 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.0.2 lib/elasticsearch_record/instrumentation/controller_runtime.rb
elasticsearch_record-1.0.1 lib/elasticsearch_record/instrumentation/controller_runtime.rb