collections should be arrays, and should not memoize stuff

This commit is contained in:
Wesley Beary 2009-09-04 18:24:11 -07:00
parent e3326e4261
commit 7f57619dd9
7 changed files with 16 additions and 25 deletions

View File

@ -19,7 +19,6 @@ module Fog
def destroy def destroy
connection.delete_bucket(@name) connection.delete_bucket(@name)
buckets.delete(name)
true true
rescue Fog::Errors::NotFound rescue Fog::Errors::NotFound
false false
@ -60,7 +59,6 @@ module Fog
options['LocationConstraint'] = @location options['LocationConstraint'] = @location
end end
connection.put_bucket(@name, options) connection.put_bucket(@name, options)
buckets[name] = self
true true
end end

View File

@ -11,15 +11,15 @@ module Fog
def all def all
data = connection.get_service.body data = connection.get_service.body
owner = Fog::AWS::S3::Owner.new(data.delete('Owner').merge!(:connection => connection)) owner = Fog::AWS::S3::Owner.new(data.delete('Owner').merge!(:connection => connection))
self.delete_if {true} buckets = Fog::AWS::S3::Buckets.new(:connection => connection)
data['Buckets'].each do |bucket| data['Buckets'].each do |bucket|
self[bucket['Name']] = Fog::AWS::S3::Bucket.new({ buckets << Fog::AWS::S3::Bucket.new({
:buckets => self, :buckets => buckets,
:connection => connection, :connection => connection,
:owner => owner :owner => owner
}.merge!(bucket)) }.merge!(bucket))
end end
self buckets
end end
def create(attributes = {}) def create(attributes = {})
@ -41,7 +41,6 @@ module Fog
:connection => connection, :connection => connection,
:name => data['Name'] :name => data['Name']
}) })
self[bucket.name] = bucket
objects_data = {} objects_data = {}
for key, value in data for key, value in data
if ['IsTruncated', 'Marker', 'MaxKeys', 'Prefix'].include?(key) if ['IsTruncated', 'Marker', 'MaxKeys', 'Prefix'].include?(key)
@ -51,7 +50,7 @@ module Fog
bucket.objects.merge_attributes(objects_data) bucket.objects.merge_attributes(objects_data)
data['Contents'].each do |object| data['Contents'].each do |object|
owner = Fog::AWS::S3::Owner.new(object.delete('Owner').merge!(:connection => connection)) owner = Fog::AWS::S3::Owner.new(object.delete('Owner').merge!(:connection => connection))
bucket.objects[object['Key']] = Fog::AWS::S3::Object.new({ bucket.objects << Fog::AWS::S3::Object.new({
:bucket => bucket, :bucket => bucket,
:connection => connection, :connection => connection,
:objects => self, :objects => self,

View File

@ -33,13 +33,11 @@ module Fog
end end
end end
target_object.merge_attributes(copy_data) target_object.merge_attributes(copy_data)
target_object.objects[target_object_key] = target_object
target_object target_object
end end
def destroy def destroy
connection.delete_object(bucket.name, @key) connection.delete_object(bucket.name, @key)
objects.delete(@key)
true true
end end
@ -55,7 +53,6 @@ module Fog
def save(options = {}) def save(options = {})
data = connection.put_object(bucket.name, @key, @body, options) data = connection.put_object(bucket.name, @key, @body, options)
@etag = data.headers['ETag'] @etag = data.headers['ETag']
objects[@key] = self
true true
end end

View File

@ -15,12 +15,7 @@ module Fog
def all(options = {}) def all(options = {})
merge_attributes(options) merge_attributes(options)
self.delete_if {true} bucket.buckets.get(bucket.name, attributes).objects
objects = bucket.buckets.get(bucket.name, attributes).objects
objects.keys.each do |key|
self[key] = objects[key]
end
self
end end
def bucket def bucket
@ -44,11 +39,12 @@ module Fog
object_data[key] = value object_data[key] = value
end end
end end
self[object_data['key']] = Fog::AWS::S3::Object.new({ object = Fog::AWS::S3::Object.new({
:bucket => bucket, :bucket => bucket,
:connection => connection, :connection => connection,
:objects => self :objects => self
}.merge!(object_data)) }.merge!(object_data))
object
rescue Fog::Errors::NotFound rescue Fog::Errors::NotFound
nil nil
end end
@ -63,11 +59,12 @@ module Fog
object_data[key] = value object_data[key] = value
end end
end end
self[object_data['key']] = Fog::AWS::S3::Object.new({ object = Fog::AWS::S3::Object.new({
:bucket => bucket, :bucket => bucket,
:connection => connection, :connection => connection,
:objects => self :objects => self
}.merge!(object_data)) }.merge!(object_data))
object
rescue Fog::Errors::NotFound rescue Fog::Errors::NotFound
nil nil
end end

View File

@ -1,5 +1,5 @@
module Fog module Fog
class Collection < Hash class Collection < Array
def self.attribute(name, other_names = []) def self.attribute(name, other_names = [])
class_eval <<-EOS, __FILE__, __LINE__ class_eval <<-EOS, __FILE__, __LINE__

View File

@ -116,12 +116,12 @@ describe 'Fog::AWS::S3::Bucket' do
end end
it "should not exist in buckets before save" do it "should not exist in buckets before save" do
@bucket.buckets.key?(@bucket.name).should be_false @bucket.buckets.all.map {|bucket| bucket.name}.include?(@bucket.name).should be_false
end end
it "should exist in buckets after save" do it "should exist in buckets after save" do
@bucket.save @bucket.save
@bucket.buckets.key?(@bucket.name).should be_true @bucket.buckets.all.map {|bucket| bucket.name}.include?(@bucket.name).should be_true
@bucket.destroy @bucket.destroy
end end

View File

@ -9,9 +9,9 @@ describe 'Fog::AWS::S3::Buckets' do
end end
it "should include persisted buckets" do it "should include persisted buckets" do
bucket = s3.buckets.create(:name => 'fogbucketname') @bucket = s3.buckets.create(:name => 'fogbucketname')
s3.buckets.all.keys.should include('fogbucketname') s3.buckets.all.map {|bucket| bucket.name}.should include('fogbucketname')
bucket.destroy @bucket.destroy
end end
end end