Module: Entraceable
- Defined in:
- lib/entraceable.rb,
lib/entraceable/version.rb
Constant Summary collapse
- VERSION =
"0.1.4"
Class Attribute Summary collapse
-
.default_level ⇒ Object
Returns the value of attribute default_level.
Class Method Summary collapse
Instance Method Summary collapse
Class Attribute Details
.default_level ⇒ Object
Returns the value of attribute default_level.
9 10 11 |
# File 'lib/entraceable.rb', line 9 def default_level @default_level end |
Class Method Details
.disable ⇒ Object
11 12 13 |
# File 'lib/entraceable.rb', line 11 def disable @enabled = false end |
.enable ⇒ Object
15 16 17 |
# File 'lib/entraceable.rb', line 15 def enable @enabled = true end |
.enabled? ⇒ Boolean
19 20 21 |
# File 'lib/entraceable.rb', line 19 def enabled? @enabled end |
.logger ⇒ Object
23 24 25 |
# File 'lib/entraceable.rb', line 23 def logger @logger ||= Rails.logger end |
.logger=(arg) ⇒ Object
27 28 29 |
# File 'lib/entraceable.rb', line 27 def logger=(arg) @logger = arg end |
Instance Method Details
#distraceable(method) ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/entraceable.rb', line 51 def distraceable(method) alias_name = alias_name_for method class_eval <<-EOS remove_method :#{method} alias_method :#{method}, :#{alias_name} remove_method :#{alias_name} EOS end |
#entraceable(method, tag: nil, level: nil) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/entraceable.rb', line 32 def entraceable(method, tag: nil, level: nil) alias_name = alias_name_for method class_eval <<-EOS alias_method :#{alias_name}, :#{method} def #{method}(*args) indent = " " * ((@indent_level ||= 0) * 2) level = (#{level.inspect} || Entraceable.default_level).intern puts = ->c{Entraceable.logger.tagged(%Q(#{tag})) {Entraceable.logger.send level, indent + c} if Entraceable.enabled?} puts.call %Q(#{method} is called with arguments, \#\{args.map(&:inspect).join(", ")\}) @indent_level += 1 begin send(:#{alias_name}, *args).tap{|result|puts.call %Q(#{method} returns \#\{result\})} ensure @indent_level -= 1 end end EOS end |