class AWS::S3::Tree

A utility class that supports exploring an S3 {Bucket} like a tree.

Frequently objects stored in S3 have keys that look like a filesystem directory structure.

Given you have a bucket with the following keys:

README.txt
videos/wedding.mpg
videos/family_reunion.mpg
photos/2010/house.jpg
photos/2011/fall/leaves.jpg
photos/2011/summer/vacation.jpg
photos/2011/summer/family.jpg

You might like to explore the contents of this bucket as a tree:

tree = bucket.as_tree

directories = tree.children.select(&:branch?).collect(&:prefix)
#=> ['photos', 'videos']

files = tree.children.select(&:leaf?).collect(&:key)
#=> ['README.txt']

If you want to start further down, pass a prefix to {Bucket#as_tree}:

tree = bucket.as_tree(:prefix => 'photos/2011')

directories = tree.children.select(&:branch?).collect(&:prefix)
#=> ['photos/20011/fall', 'photos/20011/summer']

files = tree.children.select(&:leaf?).collect(&:key)
#=> []

All non-leaf nodes ({Tree} and {Tree::BranchNode} instances) have a {Tree::Parent#children} method that provides access to the next level of the tree, and all nodes ({Tree}, {Tree::BranchNode}, and {Tree::LeafNode}) have a {#parent} method that returns the parent node. In our examples above, the non-leaf nodes are common prefixes to multiple keys (directories) and leaf nodes are object keys.

You can continue crawling the tree using the `children` collection on each branch node, which will contain the branch nodes and leaf nodes below it.

You can construct a Tree object using the `as_tree` method of any of the following classes:

The methods to explore the tree are the same for each kind of leaf node, but {Tree::LeafNode#member} will return a different type of object depending on which kind of collection the tree is using.

Public Class Methods

new(collection, options = {}) click to toggle source

@param [ObjectCollection, BucketVersionCollection,

MultipartUploadCollection] collection The collection whose
members will be explored using the tree.

@param [Hash] options Additional options for constructing the

tree.

@option options [String] :prefix (nil) Set prefix to choose

where the top of the tree will be.  A value of `nil` means
that the tree will include all objects in the collection.

@option options [String] :delimiter ('/') The string that

separates each level of the tree.  This is usually a
directory separator.

@option options [Boolean] :append (true) If true, the delimiter is

appended to the prefix when the prefix does not already end
with the delimiter.
Calls superclass method AWS::S3::Tree::Parent.new
# File lib/aws/s3/tree.rb, line 106
def initialize collection, options = {}
  super
end

Public Instance Methods

parent() click to toggle source

@return The parent node in the tree. In the case of a Tree,

the parent is always nil.
# File lib/aws/s3/tree.rb, line 112
def parent; nil; end