Sha256: ee48cbdde07978783f05a90c62571c07fd92ca747852826c271c665495c3b2a7

Contents?: true

Size: 1.47 KB

Versions: 5

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: false

module Carioca
  module Services
    class Debugger
      def self.get(service:, trace: Carioca::Registry.config.debugger_tracer)
        ProxyDebug.new service:, trace:
      end
    end

    class ProxyDebug
      def initialize(service:, trace:)
        registry = Carioca::Registry.get
        @service = registry.get_service name: service
        @tracers = %i[output logger]
        raise "Debugger :trace is not valid : #{trace}, must be in : #{@tracers}" unless @tracers.include? trace

        @tracer = registry.get_service name: trace
        @tracer_type = trace
      end

      def method_missing(methodname, *args, **keywords, &)
        trace message: "BEGIN CALL for service #{@service.class}"
        trace message: "Method called: #{methodname}"
        trace message: "args : #{args.join ' '}"
        trace message: "keywords : #{keywords}"
        if block_given?
          trace message: 'block given'
          a = @service.send(methodname, *args, **keywords, &)
        else
          a = @service.send(methodname, *args, **keywords)
        end
        trace message: "=> method returned: #{a}"
        trace message: 'END CALL'

        a
      end

      def trace(message:)
        if @tracer_type == :output
          save = @tracer.mode
          @tracer.mode = :mono
          @tracer.debug message
          @tracer.mode = save
        else
          @tracer.debug('Carioca->ProxyDebug') { message }
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
carioca-2.1.10 lib/carioca/services/debug.rb
carioca-2.1.9 lib/carioca/services/debug.rb
carioca-2.1.8 lib/carioca/services/debug.rb
carioca-2.1.7 lib/carioca/services/debug.rb
carioca-2.1.6 lib/carioca/services/debug.rb