Sha256: 13180f7dbfcae658d3aa6040c857e4204995def543e78673c899f272c8001ee4

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Trifle
  module Logger
    module Middleware
      module RailsController
        def self.included(base)
          base.extend ClassMethods
          base.include InstanceMethods
        end

        module ClassMethods
          def with_trifle_logger(options = {})
            around_action :with_trifle_logger, options
          end
        end

        module InstanceMethods
          def with_trifle_logger
            Trifle::Logger.tracer = Trifle::Logger.default.tracer_class.new(
              key: trace_key, meta: trace_meta
            )
            yield
          rescue => e # rubocop:disable Style/RescueStandardError
            Trifle::Logger.tracer.trace("Exception: #{e}", state: :error)
            Trifle::Logger.tracer.fail!
            raise e
          ensure
            Trifle::Logger.tracer.wrapup
          end

          def trace_key
            "#{params[:controller]}/#{params[:action]}"
          end

          def trace_meta
            [params[:id]].compact
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
trifle-logger-0.4.1 lib/trifle/logger/middleware/rails_controller.rb
trifle-logger-0.4.0 lib/trifle/logger/middleware/rails_controller.rb
trifle-logger-0.3.1 lib/trifle/logger/middleware/rails_controller.rb
trifle-logger-0.3.0 lib/trifle/logger/middleware/rails_controller.rb