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

Returns a new instance of Model.



256
257
258
259
260
261
262
263
# File 'lib/fog/vcloud_director/compute.rb', line 256

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



288
289
290
291
292
293
# File 'lib/fog/vcloud_director/compute.rb', line 288

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

#lazy_load_attrsObject



265
266
267
# File 'lib/fog/vcloud_director/compute.rb', line 265

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?



280
281
282
283
284
285
286
# File 'lib/fog/vcloud_director/compute.rb', line 280

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



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

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