class Fog::Compute::VcloudDirector::Model

Public Class Methods

new(attrs={}) click to toggle source
Calls superclass method
# File lib/fog/vcloud_director/compute.rb, line 273
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

Public Instance Methods

inspect() click to toggle source
Calls superclass method
# File lib/fog/vcloud_director/compute.rb, line 305
def inspect
  @inspecting = true
  out = super
  @inspecting = false
  out
end
lazy_load_attrs() click to toggle source
# File lib/fog/vcloud_director/compute.rb, line 282
def lazy_load_attrs
  @lazy_load_attrs ||= self.class.attributes - attributes.keys
end
make_attr_loaded_method(attr) click to toggle source

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

# File lib/fog/vcloud_director/compute.rb, line 297
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) click to toggle source
# File lib/fog/vcloud_director/compute.rb, line 286
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