lib/perforator.rb in perforator-0.1.2 vs lib/perforator.rb in perforator-0.2.0

- old
+ new

@@ -10,11 +10,11 @@ :negative_callback, :start_time, :finish_time, :spent_time def initialize(options = {}) @name = options.fetch(:name, nil) @logger = options.fetch(:logger, nil) - @puts = options.fetch(:puts, false) + @process_puts = options.fetch(:puts, false) @expected_time = options.fetch(:expected_time, nil) @positive_callback = options.fetch(:positive_callback, nil) @negative_callback = options.fetch(:negative_callback, nil) raise NoExpectedTimeError if callbacks_without_expected_time? @@ -28,16 +28,25 @@ yield(self) finish end - def puts? - @puts + def log!(content) + log_items << content end private + attr_reader :process_puts + + alias_method :process_puts?, :process_puts + alias_method :process_logger?, :logger + + def log_items + @log_items ||= [] + end + def start log! "=======> #{name}" @start_time = Time.now @@ -50,27 +59,30 @@ log! "Finish: #{finish_time}" log! "Spent: #{spent_time}" execute_callbacks! + release_logs! end def execute_callbacks! return unless expected_time if spent_time < expected_time && positive_callback log! "Spent time less than exepcted. Executing: #{positive_callback.inspect}" positive_callback.call elsif spent_time > expected_time && negative_callback - log! "Spent time more than exepcted. Executing: #{positive_callback.inspect}" + log! "Spent time more than exepcted. Executing: #{negative_callback.inspect}" negative_callback.call end end - def log!(content) - puts(content) if puts? - logger.info(content) if logger + def release_logs! + log_items.each do |log_item| + puts(log_item) if process_puts? + logger.info(log_item) if process_logger? + end end def callbacks_without_expected_time? (positive_callback || negative_callback) && !expected_time end @@ -83,13 +95,8 @@ callbacks.map { |c| c.respond_to?(:call) }.uniq == [true] end def expected_time_valid? expected_time.nil? || expected_time.is_a?(Fixnum) - end - - # TODO Add possibility to log method_missing keys - def method_missing(meth, *args, &blk) - log!("#{meth}: #{args[0]}") end end end