Module: Services::Base::CallLogger

Defined in:
lib/services/modules/call_logger.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(mod) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'lib/services/modules/call_logger.rb', line 4

def self.prepended(mod)
  mod.extend ClassMethods
  mod.instance_eval do
    def inherited(subclass)
      subclass.extend ClassMethods
      subclass.disable_call_logging if self.call_logging_disabled
    end
  end
end

Instance Method Details

#call(*args, **kwargs) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/services/modules/call_logger.rb', line 30

def call(*args, **kwargs)
  unless self.class.call_logging_disabled
    log "START with args: #{args}, kwargs: #{kwargs}", caller: caller
    start = Time.now
  end
  begin
    result = super
  rescue => e
    log exception_message(e), {}, 'error'
    raise e
  ensure
    log 'END', duration: (Time.now - start).round(2) unless self.class.call_logging_disabled
    result
  end
end