Class: S3::Bucket

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Proxies, Parser
Defined in:
lib/s3/bucket.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Parser

#parse_copy_object_result, #parse_error, #parse_is_truncated, #parse_list_all_my_buckets_result, #parse_list_bucket_result, #parse_location_constraint, #rexml_document

Instance Attribute Details

#nameObject

Returns the value of attribute name.



7
8
9
# File 'lib/s3/bucket.rb', line 7

def name
  @name
end

#serviceObject

Returns the value of attribute service.



7
8
9
# File 'lib/s3/bucket.rb', line 7

def service
  @service
end

Class Method Details

.vhost?(name) ⇒ Boolean

Returns:

  • (Boolean)


104
105
106
# File 'lib/s3/bucket.rb', line 104

def self.vhost?(name)
  "#{name}.#{HOST}" =~ /\A#{URI::REGEXP::PATTERN::HOSTNAME}\Z/
end

Instance Method Details

#==(other) ⇒ Object

Compares the bucket with other bucket. Returns true if the names of the buckets are the same, and both have the same services (see Service equality)



29
30
31
# File 'lib/s3/bucket.rb', line 29

def ==(other)
  self.name == other.name and self.service == other.service
end

#destroy(force = false) ⇒ Object

Destroys given bucket. Raises an S3::Error::BucketNotEmpty exception if the bucket is not empty. You can destroy non-empty bucket passing true (to force destroy)



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/s3/bucket.rb', line 45

def destroy(force = false)
  delete_bucket
  true
rescue Error::BucketNotEmpty
  if force
    objects.destroy_all
    retry
  else
    raise
  end
end

#exists?Boolean

Similar to retrieve, but catches S3::Error::NoSuchBucket exceptions and returns false instead.

Returns:

  • (Boolean)


35
36
37
38
39
40
# File 'lib/s3/bucket.rb', line 35

def exists?
  retrieve
  true
rescue Error::NoSuchBucket
  false
end

#hostObject

Returns host name of the bucket according (see #vhost? method)



78
79
80
# File 'lib/s3/bucket.rb', line 78

def host
  vhost? ? "#@name.#{HOST}" : "#{HOST}"
end

#inspectObject

:nodoc:



100
101
102
# File 'lib/s3/bucket.rb', line 100

def inspect #:nodoc:
  "#<#{self.class}:#{name}>"
end

#location(reload = false) ⇒ Object

Returns location of the bucket, e.g. “EU”



21
22
23
24
# File 'lib/s3/bucket.rb', line 21

def location(reload = false)
  return @location if defined?(@location) and not reload
  @location = location_constraint
end

#object(key) ⇒ Object

Returns the object with the given key. Does not check whether the object exists. But also does not issue any HTTP requests, so it’s much faster than objects.find



96
97
98
# File 'lib/s3/bucket.rb', line 96

def object(key)
  Object.send(:new, self, :key => key)
end

#objectsObject

Returns the objects in the bucket and caches the result



89
90
91
# File 'lib/s3/bucket.rb', line 89

def objects
  Proxy.new(lambda { list_bucket }, :owner => self, :extend => ObjectsExtension)
end

#path_prefixObject

Returns path prefix for non VHOST bucket. Path prefix is used instead of VHOST name, e.g. “bucket_name/”



84
85
86
# File 'lib/s3/bucket.rb', line 84

def path_prefix
  vhost? ? "" : "#@name/"
end

#retrieveObject

Retrieves the bucket information from the server. Raises an S3::Error exception if the bucket doesn’t exist or you don’t have access to it, etc.



15
16
17
18
# File 'lib/s3/bucket.rb', line 15

def retrieve
  bucket_headers
  self
end

#save(options = {}) ⇒ Object

Saves the newly built bucket.

Options

  • :location - location of the bucket (:eu or us)

  • Any other options are passed through to Connection#request



64
65
66
67
68
# File 'lib/s3/bucket.rb', line 64

def save(options = {})
  options = {:location => options} unless options.is_a?(Hash)
  create_bucket_configuration(options)
  true
end

#vhost?Boolean

Returns true if the name of the bucket can be used like VHOST name. If the bucket contains characters like underscore it can’t be used as VHOST (e.g. bucket_name.s3.amazonaws.com)

Returns:

  • (Boolean)


73
74
75
# File 'lib/s3/bucket.rb', line 73

def vhost?
  self.class.vhost?(@name)
end