class Module
Public Instance Methods
track_method(method_name, method_arguments = {})
click to toggle source
# File lib/track_method.rb, line 25 def track_method(method_name, method_arguments = {}) TrackMethod.console.notice "Tracking: #{self.name}.#{method_name}" wrap_method(method_name) do |org_method, args, block| benchmark_start = Time.now result = org_method.call(*args, &block) benchmark_end = Time.now # TODO: Code below should go somewhere else. benchmark_at = ((benchmark_end.to_f * 1000.0) - (benchmark_start.to_f * 1000.0)) argument_mapping = {} method_arguments.each do |method_label, method_needle| argument_mapping[method_label] = args[method_needle] end benchmark_output = "#{(benchmark_at).to_s.rjust(20, ' ')} #{self.name}.#{method_name}(#{argument_mapping.inspect})" case when benchmark_at > 500 TrackMethod.console.error benchmark_output when benchmark_at > 200 TrackMethod.console.warn benchmark_output when benchmark_at > 100 TrackMethod.console.notice benchmark_output else TrackMethod.console.log benchmark_output end result end end