11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/method_logger.rb', line 11
def included(base_class)
options = @_options
methods = @_methods || base_class.instance_methods(false) + base_class.private_instance_methods(false)
methods -= options[:ignored_methods]
formatter = options.delete(:formatter) || default_formatter
logger = options[:logger] || default_logger(options)
base_class.class_eval do
methods.each do |method_name|
method = instance_method(method_name)
define_method(method_name) do |*args, &block|
return_value = method.bind(self).call(*args, &block)
text = formatter.call(base_class, method_name, args.inspect, return_value.inspect)
puts(text) if options[:log_to_stdout]
logger.info(text) if options[:log_to_file]
return_value
end
end
end
end
|