module GitCompound::Logger::Debugger

Debugger mixin

Public Instance Methods

debug_after(method, &block) click to toggle source
# File lib/git_compound/logger/debugger.rb, line 10
def debug_after(method, &block)
  debug(method, :after, &block)
end
debug_before(method, &block) click to toggle source
# File lib/git_compound/logger/debugger.rb, line 6
def debug_before(method, &block)
  debug(method, :before, &block)
end

Private Instance Methods

debug(method, moment, &block) click to toggle source
# File lib/git_compound/logger/debugger.rb, line 16
def debug(method, moment, &block)
  raise GitCompoundError, 'No block given !' unless block

  method_old = "#{method}_old_debugged".to_sym
  alias_method(method_old, method)
  private method_old

  define_method(method) do |*args|
    Logger.debug(instance_exec(*args, &block)) if moment == :before
    args.insert(0, send(method_old, *args))
    Logger.debug(instance_exec(*args, &block)) if moment == :after

    args.first
  end
end