class Freshener
Public Class Methods
all()
click to toggle source
Returns a Hash of all installed fresheners.
Example:
>> Freshener.all => { "rubygems" => #<RubyGems:0x00000000000000> }
# File lib/freshener.rb, line 17 def self.all fresheners = Dir.glob(File.join(Freshen::FRESHENERS_DIR, "*.rb")) fresheners.map! { |path| File.basename(path, ".rb") } instances_of(*fresheners) end
class_for(name)
click to toggle source
Get the class name for a freshener.
Arguments:
name: (String)
Example:
>> Freshener.class_for :ruby_gems => "RubyGems"
# File lib/freshener.rb, line 68 def self.class_for(name) klass = name.to_s.capitalize klass.gsub!(/[-_.\s]([a-zA-Z0-9])/) { $1.upcase } klass.tr!("+", "x") klass end
ensure_installed!(*fresheners)
click to toggle source
Ensure that the specified fresheners are installed.
Arguments:
>> Freshener.ensure_installed! :ruby_gems => nil
# File lib/freshener.rb, line 121 def self.ensure_installed!(*fresheners) fresheners.each do |name| unless installed? name raise Freshen::FreshenerNotInstalled.new(name) end end nil end
installed?(*fresheners)
click to toggle source
Check that the specified fresheners are installed.
Arguments:
fresheners: (Splat)
Example:
>> Freshener.installed? :ruby_gems => true
# File lib/freshener.rb, line 107 def self.installed?(*fresheners) fresheners.each do |name| return false unless File.file? File.join(Freshen::FRESHENERS_DIR, "#{name}.rb") end true end
instance_of(name)
click to toggle source
Returns an instance of the specified freshener.
Arguments:
name: (String)
Example:
>> Freshener.instance_of :ruby_gems => #<RubyGems:0x00000000000000>
# File lib/freshener.rb, line 51 def self.instance_of(name) load_by_name(name) klass = class_for(name) klass = Object.const_get(klass) klass.new end
instances_of(*fresheners)
click to toggle source
Returns a Hash containing instances of the specified freshehers.
Example:
>> Freshener.instances_of :ruby_gems => { "rubygems" => #<RubyGems:0x00000000000000> }
# File lib/freshener.rb, line 30 def self.instances_of(*fresheners) fresheners.sort_by! do |name| name end fresheners.map! do |name| [name.to_s, instance_of(name.to_s)] end Hash[*fresheners.flatten] end
Private Class Methods
load_by_name(name)
click to toggle source
Load a freshener from the fresheners directory.
Arguments:
name: (String)
Example:
>> Freshener.load_by_name :ruby_gems => nil
Raises:
FreshenerNotInstalled: When the specified freshener is not installed. FreshenerLoadError: When the specified freshener could not be loaded.
# File lib/freshener.rb, line 88 def self.load_by_name(name) begin require File.join(Freshen::FRESHENERS_DIR, "#{name}.rb") rescue LoadError raise Freshen::FreshenerLoadError.new(name) end nil end
Public Instance Methods
freshen()
click to toggle source
Freshen
up the freshener!
Example:
>> rubygems = RubyGems.new >> rubygems.freshen => nil
# File lib/freshener.rb, line 153 def freshen raise Freshen::UpdateMethodNotImplementedError.new(self) end
needs_freshening?()
click to toggle source
Whether or not we the freshener needs freshening up.
Example:
>> rubygems = RubyGems.new >> rubygems.needs_freshening? => true
# File lib/freshener.rb, line 142 def needs_freshening? true end