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?
|