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

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

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Model



261
262
263
264
265
266
267
268
# File 'lib/fog/vcloud_director/compute.rb', line 261

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



293
294
295
296
297
298
# File 'lib/fog/vcloud_director/compute.rb', line 293

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

#lazy_load_attrsObject



270
271
272
# File 'lib/fog/vcloud_director/compute.rb', line 270

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?



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

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



274
275
276
277
278
279
280
281
# File 'lib/fog/vcloud_director/compute.rb', line 274

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