class Luban::Deployment::Configuration::ServerSet
Public Class Methods
new()
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 7 def initialize @servers = { :all => [] } end
Public Instance Methods
add_host(host, **properties)
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 27 def add_host(host, **properties) new_server = Server.create(host, properties) if server = has_server?(new_server) server.user = new_server.user unless new_server.user.nil? server.port = new_server.port unless new_server.port.nil? server.add_properties(properties) server else all << new_server new_server end.tap do |s| s.roles.each do |role| @servers[role] ||= [] @servers[role] << s unless @servers[role].include?(s) end end end
add_hosts_for_role(role, hosts, **properties)
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 45 def add_hosts_for_role(role, hosts, **properties) properties_deepcopy = Marshal.dump(properties.merge(:roles => Array(role))) Array(hosts).each { |host| add_host(host, Marshal.load(properties_deepcopy)) } end
all()
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 11 def all @servers[:all] end
available_roles()
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 15 def available_roles @servers.keys - [:all] end
each() { |server| ... }
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 71 def each all.each { |server| yield server } end
find_by_role(role, **opts)
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 56 def find_by_role(role, **opts) if @servers.has_key?(role) opts.inject(@servers[role]) do |_servers, (action, key)| send(action, _servers, key) end else [] end end
find_by_roles(roles, **opts)
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 50 def find_by_roles(roles, **opts) roles.inject([]) do |result, role| result.concat(find_by_role(role, opts)) end end
find_primary(role)
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 66 def find_primary(role) _servers = find_by_role(role) _servers.find(&:primary?) || _servers.first end
has_server?(server)
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 19 def has_server?(server) all.find do |s| s.user == server.user and s.hostname == server.hostname and s.port == server.port end end
Protected Instance Methods
exclude(_servers, key)
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 77 def exclude(_servers, key) _servers.select { |server| !server[key] } end
filter(_servers, key)
click to toggle source
# File lib/luban/deployment/configuration/server_set.rb, line 81 def filter(_servers, key) _servers.select { |server| server[key] } end