Sha256: 7d7a7d2a8b033b6966686441270ddc49ff24d61e4988c71b17a9d9b6b45d0c46

Contents?: true

Size: 1.2 KB

Versions: 11

Compression:

Stored size: 1.2 KB

Contents

# frozen_string_literal: true

module Facter
  module Util
    module ApiDebugger
      def self.prepended(receiver)
        exclude, print_caller = parse_options(ENV['API_DEBUG'])

        receiver_methods = receiver.instance_methods - Object.methods
        receiver_methods.each do |meth|
          ApiDebugger.class_eval do
            define_method(meth) do |*args|
              method_call = super(*args)

              unless exclude.include?(meth)
                puts '#' * 80
                puts "Method call: #{meth}"
                puts "Called with: #{args.inspect}"
                if print_caller.include?(meth)
                  puts '-' * 80
                  puts caller
                end
                puts '#' * 80
              end
              method_call
            end
          end
        end
      end

      def self.parse_options(options)
        exclude = []
        print_caller = []

        options.split(',').each do |option|
          if option.start_with?('-')
            exclude << option[1..-1].to_sym
          elsif option.start_with?('+')
            print_caller << option[1..-1].to_sym
          end
        end

        [exclude, print_caller]
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
facter-4.10.0 lib/facter/util/api_debugger.rb
facter-4.9.0 lib/facter/util/api_debugger.rb
facter-4.8.0 lib/facter/util/api_debugger.rb
facter-4.7.1 lib/facter/util/api_debugger.rb
facter-4.7.0 lib/facter/util/api_debugger.rb
facter-4.5.2 lib/facter/util/api_debugger.rb
facter-4.5.1 lib/facter/util/api_debugger.rb
facter-4.5.0 lib/facter/util/api_debugger.rb
facter-4.4.3 lib/facter/util/api_debugger.rb
facter-4.4.2 lib/facter/util/api_debugger.rb
facter-4.4.1 lib/facter/util/api_debugger.rb