@@ -34,8 +34,7 @@ def each
3434 resource : @resource ,
3535 client : @client
3636 end
37-
38- rescue Aws ::S3 ::Errors ::NoSuchBucket , Aws ::S3 ::Errors ::NotFound
37+ rescue Aws ::S3 ::Errors ::NoSuchBucket , Aws ::S3 ::Errors ::NotFound
3938 end
4039 end
4140
@@ -50,7 +49,7 @@ def exist?(key)
5049 def upload_file ( key :, file :, **opts )
5150 obj = resource . bucket ( @bucket_name ) . object ( key )
5251
53- return unless obj . upload_file ( file . path , **opts )
52+ return unless upload_file_or_io ( obj , file , **opts )
5453
5554 Objects ::S3 . new \
5655 obj ,
@@ -74,12 +73,13 @@ def find(key)
7473 end
7574
7675 def delete_files ( keys )
77- resource . bucket ( @bucket_name ) . delete_objects ( {
78- delete : {
79- objects : keys . map { |key | { key : key } } ,
80- quiet : true
81- }
82- } )
76+ resource
77+ . bucket ( @bucket_name )
78+ . delete_objects \
79+ delete : {
80+ objects : keys . map { |key | { key : key } } ,
81+ quiet : true
82+ }
8383 rescue Aws ::S3 ::Errors ::NoSuchBucket , Aws ::S3 ::Errors ::NotFound
8484 end
8585
@@ -92,6 +92,14 @@ def client
9292 def resource
9393 @resource ||= Aws ::S3 ::Resource . new ( @options )
9494 end
95+
96+ def upload_file_or_io ( obj , file_or_io , **opts )
97+ if file_or_io . respond_to? ( :path )
98+ obj . upload_file ( file_or_io . path , **opts )
99+ else
100+ obj . upload_stream ( **opts ) { |write_stream | IO . copy_stream ( file_or_io , write_stream ) }
101+ end
102+ end
95103 end
96104 end
97105end
0 commit comments