Class: AWS::S3::ObjectVersionCollection

Inherits:
Object
  • Object
show all
Includes:
Core::Model, Enumerable
Defined in:
lib/aws/s3/object_version_collection.rb

Overview

For S3 buckets with versioning enabled, objects will store versions each time you write to them.

object = bucket.objects['myobj']
object.write('1')
object.write('2')
object.write('3')

object.versions.collect(&:read)
#=> ['1', '2', '3']

To see all the version id for a particular object, access the any particular version, and see the latest version:

object.versions.each do |version| puts version.version_id end
#=> T2TwAiZ3SmNr7tOfe0QBa4RZnSb3GSLq
#=> kAEHC_ysT65bT4P3zyYOP1ELA6ajar_6
#=> itHPX6m8na_sog0cAtkgP3QITEE8v5ij

object.versions['itHPX6m8na_sog0cAtkgP3QITEE8v5ij']
#=> <AWS::S3::ObjectVersion:<<bucket>>:myobj:itHPX6m8na_sog0cAtkgP3QITEE8v5ij>

object.versions.latest
#=> <AWS::S3::ObjectVersion:<<bucket>>:myobj:T2TwAiZ3SmNr7tOfe0QBa4RZnSb3GSLq>

If you know the id of a particular version you can get that object.

bucket.objects['myobj'].version[version_id].delete

Instance Attribute Summary collapse

Attributes included from Core::Model

#config

Instance Method Summary collapse

Methods included from Core::Model

#client, #config_prefix, #inspect

Constructor Details

#initialize(object, options = {}) ⇒ ObjectVersionCollection

Returns a new instance of ObjectVersionCollection.

Parameters:


55
56
57
58
# File 'lib/aws/s3/object_version_collection.rb', line 55

def initialize object, options = {}
  @object = object
  super(options)
end

Instance Attribute Details

#objectS3Object (readonly)

Returns The object this collection belongs to.

Returns:

  • (S3Object)

    The object this collection belongs to.


52
53
54
# File 'lib/aws/s3/object_version_collection.rb', line 52

def object
  @object
end

Instance Method Details

#[](version_id) ⇒ ObjectVersion

Returns an object that represents a single version of the #object.

Parameters:

  • version_id (String)

Returns:


63
64
65
# File 'lib/aws/s3/object_version_collection.rb', line 63

def [] version_id
  ObjectVersion.new(object, version_id)
end

#each {|object_version| ... } ⇒ nil

Yields once for each version of the #object.

Yields:

  • (object_version)

Yield Parameters:

  • object_version (ObectVersion)

Returns:

  • (nil)

78
79
80
81
82
83
84
85
# File 'lib/aws/s3/object_version_collection.rb', line 78

def each &block
  object.bucket.versions.with_prefix(object.key).each do |version|
    if version.key == object.key
      yield(version)
    end
  end
  nil
end

#latestObjectVersion

Note:

Generally you will just want to grab the object key its key.

Returns the latest version of this object.

Returns:


69
70
71
# File 'lib/aws/s3/object_version_collection.rb', line 69

def latest
  self.find{|version| true }
end