class EY::Serverside::Adapter::Arguments
A mutable arguments receiver that fails fast when bad values are given.
Attributes
clean[RW]
config[RW]
ignore_existing[RW]
instance_names[R]
instance_roles[R]
instances[R]
migrate[RW]
serverside_version[RW]
verbose[RW]
Public Class Methods
nonempty_attr_accessor(*names)
click to toggle source
# File lib/engineyard-serverside-adapter/arguments.rb, line 8 def self.nonempty_attr_accessor(*names) attr_reader *names names.each do |name| define_method(:"#{name}=") do |value| if value.nil? || value.to_s.empty? raise ArgumentError, "Value for '#{name}' must be non-empty." end instance_variable_set("@#{name}", value) end end end
Public Instance Methods
[](key)
click to toggle source
# File lib/engineyard-serverside-adapter/arguments.rb, line 29 def [](key) send(key) end
instances=(instances)
click to toggle source
This is a special setter for setting all instance information at the same time. It sets @instance_roles, @instance_names and @instances.
# File lib/engineyard-serverside-adapter/arguments.rb, line 35 def instances=(instances) unless instances.respond_to?(:each) raise ArgumentError, "Value for 'instances' must look like an enumerable." end if instances.empty? raise ArgumentError, "Value for 'instances' must not be empty." end @instance_roles = instances.inject({}) do |roles, instance| unless instance.respond_to?(:[]) && instance[:hostname] && instance[:roles] raise ArgumentError, "Malformed instance #{instance.inspect}; it must have both [:hostname] and [:roles]" end roles.merge(instance[:hostname] => instance[:roles].join(',')) end @instance_names = instances.inject({}) do |names, instance| names.merge(instance[:hostname] => instance[:name]) end @instances = instances.map{|i| i[:hostname]} end
serverside_version=(value)
click to toggle source
Uses Gem::Version to validate the version arg.
# File lib/engineyard-serverside-adapter/arguments.rb, line 60 def serverside_version=(value) if value.nil? || value.to_s.empty? raise ArgumentError, "Value for 'serverside_version' must be non-empty." end @serverside_version = Gem::Version.create(value.dup) # dup b/c Gem::Version sometimes modifies its argument :( end