Module: Entraceable
- Defined in:
- lib/entraceable.rb,
lib/entraceable/version.rb,
lib/entraceable_preference.rb
Defined Under Namespace
Classes: Preference
Constant Summary collapse
- VERSION =
"0.1.5"
Class Attribute Summary collapse
-
.preference ⇒ Object
Returns the value of attribute preference.
Class Method Summary collapse
- .default_level ⇒ Object
- .default_level=(default_level) ⇒ Object
- .disable ⇒ Object
- .enable ⇒ Object
- .enabled? ⇒ Boolean
- .logger ⇒ Object
- .logger=(arg) ⇒ Object
Instance Method Summary collapse
Class Attribute Details
.preference ⇒ Object
Returns the value of attribute preference.
8 9 10 |
# File 'lib/entraceable.rb', line 8 def preference @preference end |
Class Method Details
.default_level ⇒ Object
10 11 12 |
# File 'lib/entraceable.rb', line 10 def default_level preference.default_level end |
.default_level=(default_level) ⇒ Object
14 15 16 |
# File 'lib/entraceable.rb', line 14 def default_level=(default_level) preference.default_level = default_level end |
.disable ⇒ Object
18 19 20 |
# File 'lib/entraceable.rb', line 18 def disable preference.disable end |
.enable ⇒ Object
22 23 24 |
# File 'lib/entraceable.rb', line 22 def enable preference.enable end |
.enabled? ⇒ Boolean
26 27 28 |
# File 'lib/entraceable.rb', line 26 def enabled? preference.enabled? end |
.logger ⇒ Object
30 31 32 |
# File 'lib/entraceable.rb', line 30 def logger @logger ||= Rails.logger end |
.logger=(arg) ⇒ Object
34 35 36 |
# File 'lib/entraceable.rb', line 34 def logger=(arg) @logger = arg end |
Instance Method Details
#distraceable(method) ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/entraceable.rb', line 58 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
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/entraceable.rb', line 39 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 |