module Fezzik
Constants
- VERSION
Public Class Methods
activated=(value)
click to toggle source
# File lib/fezzik/base.rb, line 2 def self.activated=(value) @activated = value end
activated?()
click to toggle source
# File lib/fezzik/base.rb, line 3 def self.activated?() @activated || false end
clear(name)
click to toggle source
# File lib/fezzik/base.rb, line 31 def self.clear(name) @@settings.delete(name) end
default_weave_options()
click to toggle source
# File lib/fezzik/base.rb, line 5 def self.default_weave_options() @@default_weave_options ||= {} end
default_weave_options=(options)
click to toggle source
# File lib/fezzik/base.rb, line 6 def self.default_weave_options=(options) @@default_weave_options = options end
destination(*names, &block)
click to toggle source
# File lib/fezzik/base.rb, line 66 def self.destination(*names, &block) @destinations ||= Set.new @destinations.merge(names) block.call if names.include?(@target_destination) end
destinations()
click to toggle source
# File lib/fezzik/base.rb, line 76 def self.destinations @destinations ||= Set.new end
env(key, value, options={})
click to toggle source
# File lib/fezzik/environment.rb, line 2 def self.env(key, value, options={}) options = { :hosts => Fezzik.get(:domain) }.merge(options) options[:hosts] = Array(options[:hosts]) @environments ||= Hash.new { |h, k| h[k] = {} } options[:hosts].each { |host| @environments[host][key] = value } end
environments()
click to toggle source
# File lib/fezzik/environment.rb, line 11 def self.environments @environments ||= Hash.new { |h, k| h[k] = {} } end
get(name)
click to toggle source
# File lib/fezzik/base.rb, line 26 def self.get(name) raise "Fezzik: No such setting: #{name}" unless @@settings.has_key?(name) @@settings[name] end
host_task(name, options = {}, &block)
click to toggle source
# File lib/fezzik/base.rb, line 40 def self.host_task(name, options = {}, &block) options = { :args => [], :deps => [], :roles => [], :weave_options => {} }.merge(options) weave_options = options[:weave_options] options.delete(:weave_options) options.each { |key, value| options[key] = Array(value) } t = HostTask.define_task(name, { options[:args] => options[:deps] }, &block) t.roles += options[:roles] t.weave_options = t.weave_options.merge(weave_options) end
init(options={})
click to toggle source
# File lib/fezzik/base.rb, line 55 def self.init(options={}) @options = options @target_destination = ENV["fezzik_destination"].to_sym rescue nil unless options[:tasks].nil? $stderr.puts "Loading Fezzik tasks from #{@options[:tasks]}" Dir[File.join(File.expand_path(@options[:tasks]), "**", "*.rake")].sort.each do |lib| Rake.application.add_import(lib) end end end
remote_task(*args, &block)
click to toggle source
# File lib/fezzik/base.rb, line 33 def self.remote_task(*args, &block) warn "WARN [Fezzik]: remote_task is deprecated as of 0.8.0, use host_task instead" roles = (Hash === args.last && args.last[:roles]) ? args.pop[:roles] : [] name, args, deps = Rake.application.resolve_args(args) host_task(name, { :args => Array(args), :deps => Array(deps), :roles => Array(roles) }, &block) end
role(role_name, settings)
click to toggle source
# File lib/fezzik/role.rb, line 2 def self.role(role_name, settings) @roles ||= {} @roles[role_name] = settings end
roles()
click to toggle source
# File lib/fezzik/role.rb, line 7 def self.roles() @roles ||= {} end
set(name, value)
click to toggle source
# File lib/fezzik/base.rb, line 8 def self.set(name, value) @@settings ||= {} value = Array(value) if name == :domain @@settings[name] = value if Object.public_instance_methods.include? name.to_sym Object.send :alias_method, :"old_#{name}", name end Object.send :define_method, name do warn "WARN [Fezzik]: accessing #{name} at the top-level is deprecated as of 0.8.0," + " use Fezzik.get(:#{name}) instead" Fezzik.get name end end
target_destination()
click to toggle source
# File lib/fezzik/base.rb, line 72 def self.target_destination @target_destination ||= nil end
with_role(role_name, &block)
click to toggle source
# File lib/fezzik/role.rb, line 9 def self.with_role(role_name, &block) return block.call if roles[role_name].nil? overridden_settings = {} new_settings = [] roles[role_name].each_key do |name| if @@settings.has_key? name overridden_settings[name] = Fezzik.get(name) else new_settings << name end end override_settings(roles[role_name]) begin block.call ensure override_settings(overridden_settings, new_settings) end end
Private Class Methods
override_settings(to_set, to_clear = [])
click to toggle source
# File lib/fezzik/role.rb, line 29 def self.override_settings(to_set, to_clear = []) to_clear.each { |setting| Fezzik.clear setting } to_set.each { |setting, value| Fezzik.set setting, value } end