Class: EY::Serverside::Adapter::Arguments

Inherits:
Object
  • Object
show all
Defined in:
lib/engineyard-serverside-adapter/arguments.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data = {}) ⇒ Arguments

Returns a new instance of Arguments.



28
29
30
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 28

def initialize(data={})
  @data = data
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth) ⇒ Object



70
71
72
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 70

def method_missing(meth, *)
  key?(meth) ? self[meth] : super
end

Class Method Details

.nonempty_writer(*names) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 6

def self.nonempty_writer(*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
      self[name] = value
    end
  end
end

.writer(*names) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 17

def self.writer(*names)
  names.each do |name|
    define_method(:"#{name}=") do |value|
      self[name] = value
    end
  end
end

Instance Method Details

#[](key) ⇒ Object



40
41
42
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 40

def [](key)
  @data[key.to_sym]
end

#[]=(key, val) ⇒ Object



36
37
38
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 36

def []=(key, val)
  @data[key.to_sym] = val
end

#dupObject



32
33
34
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 32

def dup
  self.class.new(@data.dup)
end

#instances=(instances) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 48

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

  instances.each do |instance|
    unless instance.respond_to?(:[]) && instance[:hostname] && instance[:roles]
      raise ArgumentError, "Malformed instance #{instance.inspect}; it must have both [:hostname] and [:roles]"
    end
  end

  self[:instances] = instances
end

#key?(key) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 44

def key?(key)
  @data.key?(key.to_sym)
end

#serverside_version=(value) ⇒ Object



66
67
68
# File 'lib/engineyard-serverside-adapter/arguments.rb', line 66

def serverside_version=(value)
  self[:serverside_version] = Gem::Version.create(value).to_s
end