Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'rewind' of https://github.com/kreynolds/paperclip

  • Loading branch information...
commit c21f0fbf83b5c5edf69134be9a8b5ad7135e2ebc 2 parents f8c2444 + 3b2b9bc
@mike-burns mike-burns authored
View
7 lib/paperclip/storage/filesystem.rb
@@ -30,7 +30,12 @@ def exists?(style_name = default_style)
# Returns representation of the data of the file assigned to the given
# style, in the format most representative of the current storage.
def to_file style_name = default_style
- @queued_for_write[style_name] || (File.new(path(style_name), 'rb') if exists?(style_name))
+ if @queued_for_write[style_name]
+ @queued_for_write[style_name].rewind
+ @queued_for_write[style_name]
+ elsif exists?(style_name)
+ File.new(path(style_name), 'rb')
+ end
end
def flush_writes #:nodoc:
View
1  lib/paperclip/storage/fog.rb
@@ -110,6 +110,7 @@ def flush_deletes
# style, in the format most representative of the current storage.
def to_file(style = default_style)
if @queued_for_write[style]
+ @queued_for_write[style].rewind
@queued_for_write[style]
else
body = directory.files.get(path(style)).body
View
5 lib/paperclip/storage/s3.rb
@@ -257,7 +257,10 @@ def s3_protocol(style = default_style)
# Returns representation of the data of the file assigned to the given
# style, in the format most representative of the current storage.
def to_file style = default_style
- return @queued_for_write[style] if @queued_for_write[style]
+ if @queued_for_write[style]
+ @queued_for_write[style].rewind
+ return @queued_for_write[style]
+ end
filename = path(style)
extname = File.extname(filename)
basename = File.basename(filename, extname)
View
6 test/storage/filesystem_test.rb
@@ -31,6 +31,12 @@ class FileSystemTest < Test::Unit::TestCase
@dummy.save!
end
+ should "always be rewound when returning from #to_file" do
+ assert_equal 0, @dummy.avatar.to_file.pos
+ @dummy.avatar.to_file.seek(10)
+ assert_equal 0, @dummy.avatar.to_file.pos
+ end
+
context "with file that has space in file name" do
setup do
rebuild_model :styles => { :thumbnail => "25x25#" }
View
6 test/storage/fog_test.rb
@@ -110,6 +110,12 @@ class FogTest < Test::Unit::TestCase
directory.destroy
end
+ should "always be rewound when returning from #to_file" do
+ assert_equal 0, @dummy.avatar.to_file.pos
+ @dummy.avatar.to_file.seek(10)
+ assert_equal 0, @dummy.avatar.to_file.pos
+ end
+
should "pass the content type to the Fog::Storage::AWS::Files instance" do
Fog::Storage::AWS::Files.any_instance.expects(:create).with do |hash|
hash[:content_type]
View
8 test/storage/s3_test.rb
@@ -335,7 +335,13 @@ def counter
should "return a relative URL for Rails to calculate assets host" do
assert_match %r{^avatars/stringio\.txt}, @dummy.avatar.url
end
- end
+
+ should "always be rewound when returning from #to_file" do
+ assert_equal 0, @dummy.avatar.to_file.pos
+ @dummy.avatar.to_file.seek(10)
+ assert_equal 0, @dummy.avatar.to_file.pos
+ end
+ end
context "Generating a secure url with an expiration" do
setup do
Please sign in to comment.
Something went wrong with that request. Please try again.