# File lib/ferry/configuration.rb, line 70 def primary(role) servers.fetch_primary(role) end
class Ferry::Configuration
Attributes
backend[W]
Public Class Methods
env()
click to toggle source
# File lib/ferry/configuration.rb, line 13 def self.env @env ||= new end
new(config = nil)
click to toggle source
# File lib/ferry/configuration.rb, line 9 def initialize(config = nil) @config ||= config end
reset!()
click to toggle source
# File lib/ferry/configuration.rb, line 17 def self.reset! @env = new end
Public Instance Methods
add_cmdline_filter(type, values)
click to toggle source
# File lib/ferry/configuration.rb, line 107 def add_cmdline_filter(type, values) cmdline_filters << Filter.new(type, values) end
ask(key, default=nil, options={})
click to toggle source
# File lib/ferry/configuration.rb, line 21 def ask(key, default=nil, options={}) question = Question.new(key, default, options) set(key, question) end
backend()
click to toggle source
# File lib/ferry/configuration.rb, line 74 def backend @backend ||= SSHKit end
configure_backend()
click to toggle source
# File lib/ferry/configuration.rb, line 80 def configure_backend backend.configure do |sshkit| sshkit.format = fetch(:format) sshkit.output_verbosity = fetch(:log_level) sshkit.default_env = fetch(:default_env) sshkit.backend = fetch(:sshkit_backend, SSHKit::Backend::Netssh) sshkit.backend.configure do |backend| backend.pty = fetch(:pty) backend.connection_timeout = fetch(:connection_timeout) backend.ssh_options = (backend.ssh_options || {}).merge(fetch(:ssh_options,{})) end end end
delete(key)
click to toggle source
# File lib/ferry/configuration.rb, line 34 def delete(key) config.delete(key) end
fetch(key, default=nil, &block)
click to toggle source
# File lib/ferry/configuration.rb, line 38 def fetch(key, default=nil, &block) value = fetch_for(key, default, &block) while callable_without_parameters?(value) value = set(key, value.call) end return value end
filter(list)
click to toggle source
# File lib/ferry/configuration.rb, line 111 def filter list setup_filters if @filters.nil? @filters.reduce(list) { |l,f| f.filter l } end
keys()
click to toggle source
# File lib/ferry/configuration.rb, line 46 def keys config.keys end
primary(role)
click to toggle source
role(name, hosts, options={})
click to toggle source
# File lib/ferry/configuration.rb, line 50 def role(name, hosts, options={}) if name == :all raise ArgumentError.new("#{name} reserved name for role. Please choose another name") end servers.add_role(name, hosts, options) end
role_properties_for(names, &block)
click to toggle source
# File lib/ferry/configuration.rb, line 66 def role_properties_for(names, &block) servers.role_properties_for(names, &block) end
roles_for(names)
click to toggle source
# File lib/ferry/configuration.rb, line 62 def roles_for(names) servers.roles_for(names) end
server(name, properties={})
click to toggle source
# File lib/ferry/configuration.rb, line 58 def server(name, properties={}) servers.add_host(name, properties) end
set(key, value)
click to toggle source
# File lib/ferry/configuration.rb, line 26 def set(key, value) config[key] = value end
set_if_empty(key, value)
click to toggle source
# File lib/ferry/configuration.rb, line 30 def set_if_empty(key, value) config[key] = value unless config.has_key? key end
setup_filters()
click to toggle source
# File lib/ferry/configuration.rb, line 98 def setup_filters @filters = cmdline_filters.clone @filters << Filter.new(:role, ENV['ROLES']) if ENV['ROLES'] @filters << Filter.new(:host, ENV['HOSTS']) if ENV['HOSTS'] fh = fetch_for(:filter,{}) || {} @filters << Filter.new(:host, fh[:host]) if fh[:host] @filters << Filter.new(:role, fh[:role]) if fh[:role] end
timestamp()
click to toggle source
# File lib/ferry/configuration.rb, line 94 def timestamp @timestamp ||= Time.now.utc end
Private Instance Methods
callable_without_parameters?(x)
click to toggle source
# File lib/ferry/configuration.rb, line 138 def callable_without_parameters?(x) x.respond_to?(:call) && ( !x.respond_to?(:arity) || x.arity == 0) end
cmdline_filters()
click to toggle source
# File lib/ferry/configuration.rb, line 118 def cmdline_filters @cmdline_filters ||= [] end
config()
click to toggle source
# File lib/ferry/configuration.rb, line 126 def config @config ||= Hash.new end
fetch_for(key, default, &block)
click to toggle source
# File lib/ferry/configuration.rb, line 130 def fetch_for(key, default, &block) if block_given? config.fetch(key, &block) else config.fetch(key, default) end end
servers()
click to toggle source
# File lib/ferry/configuration.rb, line 122 def servers @servers ||= Servers.new end