class MethodLogger::Mixin
Public Class Methods
new(options = {})
click to toggle source
# File lib/method_logger.rb, line 6 def initialize(options = {}) @_options = default_options.merge(options) @_methods = options[:methods] end
Public Instance Methods
included(base_class)
click to toggle source
# File lib/method_logger.rb, line 11 def included(base_class) options = @_options methods = @_methods || base_class.instance_methods(options[:include_inherited]) methods -= Object.methods if options[:include_inherited] methods += 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
Private Instance Methods
default_formatter()
click to toggle source
# File lib/method_logger.rb, line 53 def default_formatter DefaultFormatter.new end
default_logger(options)
click to toggle source
# File lib/method_logger.rb, line 49 def default_logger(options) Logger.new(File.open(options[:filename], 'a+')) end
default_options()
click to toggle source
# File lib/method_logger.rb, line 37 def default_options { include_inherited: true, ignored_methods: [], logger: nil, formatter: DefaultFormatter.new, filename: 'method_logger_log.txt', log_to_file: false, log_to_stdout: true } end