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