Sha256: 9c96c98073122d6567141f635542758965a46385205eb6c97981a92b5524430c

Contents?: true

Size: 972 Bytes

Versions: 6

Compression:

Stored size: 972 Bytes

Contents

module Panda
  class Resource < Base
    include Panda::Destroyers
    include Panda::Associations
    include Panda::CloudConnection

    def initialize(attributes={})
      super(attributes)
      @attributes['cloud_id'] ||= Panda.cloud.id
    end

    class << self
      include Panda::CloudConnection

      def cloud
        Panda.cloud
      end

      # delegate to the scope if the method exists
      def method_missing(method_symbol, *args, &block)
        scope = Panda::const_get("#{sti_name}Scope").new(self)
        if scope.respond_to?(method_symbol)
           scope.send(method_symbol, *args, &block)
        else
          super
        end
      end

    end

    def cloud
      Panda.clouds[cloud_id]
    end

    def reload
      perform_reload("cloud_id" => cloud_id)
      reset_associations
      self
    end

    private
    
    def load_and_reset(response)
      load_response(response.merge('cloud_id' => cloud.id))
    end
      
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
panda-1.6.1 lib/panda/resources/resource.rb
panda-1.6.0 lib/panda/resources/resource.rb
panda-1.5.0 lib/panda/resources/resource.rb
panda-1.4.4 lib/panda/resources/resource.rb
panda-1.4.3 lib/panda/resources/resource.rb
panda-1.4.2 lib/panda/resources/resource.rb