Sha256: 22448f90fc4457df7b968b23afea224936ac11ac65f331de8fe38011510c89e8

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

                                                                                           
module AssetCloud
  class AssetNotFoundError < StandardError
    def initialize(key_or_message, message=false)
      super(message ? key_or_message : "Could not find asset #{key_or_message.to_s.inspect}")
    end
  end
  
  class Bucket
    attr_reader :name
    attr_accessor :cloud
    
    # returns a new Bucket class which writes to each given Bucket
    # but only uses the first one for reading
    def self.chain(*klasses)
      Class.new(self) do
        attr_reader :chained_buckets
        define_method 'initialize' do |cloud, name|
          super
          @chained_buckets = klasses.map {|klass| klass.new(cloud,name)}
        end
        def ls(key=nil)
          @chained_buckets.first.ls(key)
        end
        def read(key)
          @chained_buckets.first.read(key)
        end
        def write(key, data)
          @chained_buckets.each { |b| b.write(key, data)}
        end
        def delete(key)
          @chained_buckets.each { |b| b.delete(key)}
        end
      end
    end
    
    def initialize(cloud, name)
      @cloud, @name = cloud, name
    end
    
    def ls(key = nil)     
      raise NotImplementedError
    end                               

    def read(key)  
      raise NotImplementedError
    end          

    def write(key, data)       
      raise NotImplementedError
    end   

    def delete(key)
      raise NotImplementedError
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
Shopify-asset_cloud-0.5.1 lib/asset_cloud/bucket.rb
jamesmacaulay-asset_cloud-0.5.0 lib/asset_cloud/bucket.rb
jamesmacaulay-asset_cloud-0.5.1 lib/asset_cloud/bucket.rb