基本的に docsからコードをコピーした場合でも、S3 オブジェクトをローカル ファイルに読み込もうとすると、ゼロバイトのファイルになり、何も書き込まれません。
1.9.3-p194 :057 > obj = s3_bucket.objects['/raw/2011-HD/2011-HD001-794.jpg']
=> <AWS::S3::S3Object:mybucket/raw/2011-HD/2011-HD001-794.jpg>
1.9.3-p194 :058 > obj.exists?
=> true
1.9.3-p194 :059 > f = File.open('/tmp/4.jpg', 'wb')
=> #<File:/tmp/4.jpg>
1.9.3-p194 :060 > obj.read do |chunk|
1.9.3-p194 :061 > f.write chunk
1.9.3-p194 :062?> end
1.9.3-p194 :063 > f.size
=> 0
ストリーミングを使用しない場合、つまりオブジェクト全体を読み取って書き込むだけの場合は、正常に動作しますf.write obj.read
アップデート
明確にするために、これも機能せず、ドキュメントから多かれ少なかれ逐語的です
1.9.3-p194 :044 > File.open('/tmp/4.jpg', 'w') do |f|
1.9.3-p194 :045 > obj.read do |chunk|
1.9.3-p194 :046 > f.write chunk
1.9.3-p194 :047?> end
1.9.3-p194 :048?> end
1.9.3-p194 :049 > File.open('/tmp/4.jpg').size
=> 0