Module: Entraceable

Defined in:
lib/entraceable.rb,
lib/entraceable/version.rb

Constant Summary collapse

VERSION =
"0.1.2"

Instance Method Summary collapse

Instance Method Details

#distraceable(method) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/entraceable.rb', line 22

def distraceable(method)
  alias_name = alias_name_for method
  class_eval "    remove_method :\#{method}\n    alias_method :\#{method}, :\#{alias_name}\n    remove_method :\#{alias_name}\n  EOS\nend\n" if Rails.env.development?

#entraceable(method, tag: nil, level: :debug) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/entraceable.rb', line 4

def entraceable(method, tag: nil, level: :debug)
  alias_name = alias_name_for method
  class_eval "    alias_method :\#{alias_name}, :\#{method}\n    def \#{method}(*args)\n      indent = \" \" * ((@indent_level ||= 0) * 2)\n      puts = ->c{Rails.logger.tagged(%Q(\#{tag})) {Rails.logger.send :\#{level}, indent + c}}\n      puts.call %Q(\#{method} is called with arguments, \\#\\{args.map(&:inspect).join(\", \")\\})\n      @indent_level += 1\n      begin\n        send(:\#{alias_name}, *args).tap{|result|puts.call %Q(\#{method} returns \\#\\{result\\})}\n      ensure\n        @indent_level -= 1\n      end\n    end\n  EOS\nend\n" if Rails.env.development?