Class: Fog::VcloudDirector::Compute::Model

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/vcloud_director/compute.rb

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Model

Returns a new instance of Model.



271
272
273
274
275
276
277
278
# File 'lib/fog/vcloud_director/compute.rb', line 271

def initialize(attrs={})
  super(attrs)
  lazy_load_attrs.each do |attr|
    attributes[attr]= NonLoaded if attributes[attr].nil?
    make_lazy_load_method(attr)
  end
  self.class.attributes.each {|attr| make_attr_loaded_method(attr)}
end

Instance Method Details

#inspectObject



303
304
305
306
307
308
# File 'lib/fog/vcloud_director/compute.rb', line 303

def inspect
  @inspecting = true
  out = super
  @inspecting = false
  out
end

#lazy_load_attrsObject



280
281
282
# File 'lib/fog/vcloud_director/compute.rb', line 280

def lazy_load_attrs
  @lazy_load_attrs ||= self.class.attributes - attributes.keys
end

#make_attr_loaded_method(attr) ⇒ Object

it adds an attr_loaded? method to know if the value has been loaded yet or not: ie description_loaded?



295
296
297
298
299
300
301
# File 'lib/fog/vcloud_director/compute.rb', line 295

def make_attr_loaded_method(attr)
  self.class.instance_eval do
    define_method("#{attr}_loaded?") do
      attributes[attr] != NonLoaded
    end
  end
end

#make_lazy_load_method(attr) ⇒ Object



284
285
286
287
288
289
290
291
# File 'lib/fog/vcloud_director/compute.rb', line 284

def make_lazy_load_method(attr)
  self.class.instance_eval do
    define_method(attr) do
      reload if attributes[attr] == NonLoaded and !@inspecting
      attributes[attr]
    end
  end
end