class Freshenary

Public Class Methods

freshen_up(*fresheners) { |name, freshener, FRESHENING| ... } click to toggle source

Call the update method on either all or the specified fresheners.

Arguments:

fresheners: (Array)

Example:

>> Freshenary.freshen_up
=> nil
# File lib/freshenary.rb, line 16
def self.freshen_up(*fresheners, &block)
  if fresheners.empty?
    fresheners = Freshener.all
  else
    Freshener.ensure_installed!(*fresheners)
    
    fresheners = Freshener.instances_of(*fresheners)
  end
  
  duration = Time.duration_of do
    fresheners.each do |name, freshener|
      if freshener.needs_freshening?
        cleaning = false
        
        begin
          yield name, freshener, Freshenary::Status::FRESHENING if block_given?
          
          freshener.freshen
          
          if freshener.respond_to? :cleanup
            yield name, freshener, Freshenary::Status::CLEANING_UP if block_given?
            
            cleaning = true
            
            freshener.cleanup(true)
          end
          
          yield name, freshener, Freshenary::Status::FRESHENED if block_given?
        rescue Freshen::ExecutableError => e
          if false == cleaning and freshener.respond_to? :cleanup
            yield name, freshener, Freshenary::Status::CLEANING_UP if block_given?
          
            freshener.cleanup(false)
          end
          
          raise e
        end
      else
        yield name, freshener, Freshenary::Status::SKIPPED if block_given?
      end
    end
  end
end