Class: Ridley::ChefObject

Inherits:
Object
  • Object
show all
Includes:
Chozo::VariaModel, Comparable
Defined in:
lib/ridley/chef_object.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource, new_attrs = {}) ⇒ ChefObject

Returns a new instance of ChefObject.

Parameters:



48
49
50
51
# File 'lib/ridley/chef_object.rb', line 48

def initialize(resource, new_attrs = {})
  @resource = resource
  mass_assign(new_attrs)
end

Class Method Details

.chef_idString?

Returns:

  • (String, nil)


5
6
7
# File 'lib/ridley/chef_object.rb', line 5

def chef_id
  @chef_id
end

.chef_json_classString?

Returns:

  • (String, nil)


30
31
32
# File 'lib/ridley/chef_object.rb', line 30

def chef_json_class
  @chef_json_class
end

.chef_typeString

Returns:

  • (String)


17
18
19
# File 'lib/ridley/chef_object.rb', line 17

def chef_type
  @chef_type ||= self.class.name.underscore
end

.set_chef_id(identifier) ⇒ String

Parameters:

  • identifier (String, Symbol)

Returns:

  • (String)


12
13
14
# File 'lib/ridley/chef_object.rb', line 12

def set_chef_id(identifier)
  @chef_id = identifier.to_sym
end

.set_chef_json_class(klass) ⇒ String

Parameters:

  • klass (String, Symbol)

Returns:

  • (String)


37
38
39
40
# File 'lib/ridley/chef_object.rb', line 37

def set_chef_json_class(klass)
  @chef_json_class = klass
  attribute(:json_class, default: klass)
end

.set_chef_type(type) ⇒ String

Parameters:

  • type (String, Symbol)

Returns:

  • (String)


24
25
26
27
# File 'lib/ridley/chef_object.rb', line 24

def set_chef_type(type)
  @chef_type = type.to_s
  attribute(:chef_type, default: type)
end

Instance Method Details

#<=>(other) ⇒ Boolean

Parameters:

  • other (Object)

Returns:

  • (Boolean)


104
105
106
# File 'lib/ridley/chef_object.rb', line 104

def <=>(other)
  self.chef_id <=> other.chef_id
end

#==(other) ⇒ Object



108
109
110
# File 'lib/ridley/chef_object.rb', line 108

def ==(other)
  self.chef_id == other.chef_id
end

#chef_idString

Returns:

  • (String)


93
94
95
# File 'lib/ridley/chef_object.rb', line 93

def chef_id
  get_attribute(self.class.chef_id)
end

#eql?(other) ⇒ Boolean

Parameters:

  • other (Object)

Returns:

  • (Boolean)


115
116
117
# File 'lib/ridley/chef_object.rb', line 115

def eql?(other)
  self.class == other.class && self == other
end

#hashObject



119
120
121
# File 'lib/ridley/chef_object.rb', line 119

def hash
  self.chef_id.hash
end

#inspectObject



97
98
99
# File 'lib/ridley/chef_object.rb', line 97

def inspect
  "#<#{self.class} chef_id:#{self.chef_id}, attributes:#{self._attributes_}>"
end

#reloadObject

Reload the attributes of the instantiated resource

Returns:

  • (Object)


87
88
89
90
# File 'lib/ridley/chef_object.rb', line 87

def reload
  mass_assign(resource.find(self)._attributes_)
  self
end

#saveBoolean

Creates a resource on the target remote or updates one if the resource already exists.

Returns:

  • (Boolean)

Raises:



60
61
62
63
64
65
66
67
68
# File 'lib/ridley/chef_object.rb', line 60

def save
  raise Errors::InvalidResource.new(self.errors) unless valid?

  mass_assign(resource.create(self)._attributes_)
  true
rescue Errors::HTTPConflict
  self.update
  true
end

#updateBoolean

Updates the instantiated resource on the target remote with any changes made to self

Returns:

  • (Boolean)

Raises:



77
78
79
80
81
82
# File 'lib/ridley/chef_object.rb', line 77

def update
  raise Errors::InvalidResource.new(self.errors) unless valid?

  mass_assign(resource.update(self)._attributes_)
  true
end