Commit 3b2b9bcf by Kelley Reynolds

Added rewind to to_file where appropriate

parent 772c8e96
...@@ -30,7 +30,12 @@ module Paperclip ...@@ -30,7 +30,12 @@ module Paperclip
# Returns representation of the data of the file assigned to the given # Returns representation of the data of the file assigned to the given
# style, in the format most representative of the current storage. # style, in the format most representative of the current storage.
def to_file style_name = default_style 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 end
def flush_writes #:nodoc: def flush_writes #:nodoc:
......
...@@ -110,6 +110,7 @@ module Paperclip ...@@ -110,6 +110,7 @@ module Paperclip
# style, in the format most representative of the current storage. # style, in the format most representative of the current storage.
def to_file(style = default_style) def to_file(style = default_style)
if @queued_for_write[style] if @queued_for_write[style]
@queued_for_write[style].rewind
@queued_for_write[style] @queued_for_write[style]
else else
body = directory.files.get(path(style)).body body = directory.files.get(path(style)).body
......
...@@ -257,7 +257,10 @@ module Paperclip ...@@ -257,7 +257,10 @@ module Paperclip
# Returns representation of the data of the file assigned to the given # Returns representation of the data of the file assigned to the given
# style, in the format most representative of the current storage. # style, in the format most representative of the current storage.
def to_file style = default_style 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) filename = path(style)
extname = File.extname(filename) extname = File.extname(filename)
basename = File.basename(filename, extname) basename = File.basename(filename, extname)
......
...@@ -31,6 +31,12 @@ class FileSystemTest < Test::Unit::TestCase ...@@ -31,6 +31,12 @@ class FileSystemTest < Test::Unit::TestCase
@dummy.save! @dummy.save!
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
context "with file that has space in file name" do context "with file that has space in file name" do
setup do setup do
rebuild_model :styles => { :thumbnail => "25x25#" } rebuild_model :styles => { :thumbnail => "25x25#" }
......
...@@ -110,6 +110,12 @@ class FogTest < Test::Unit::TestCase ...@@ -110,6 +110,12 @@ class FogTest < Test::Unit::TestCase
directory.destroy directory.destroy
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
should "pass the content type to the Fog::Storage::AWS::Files instance" do should "pass the content type to the Fog::Storage::AWS::Files instance" do
Fog::Storage::AWS::Files.any_instance.expects(:create).with do |hash| Fog::Storage::AWS::Files.any_instance.expects(:create).with do |hash|
hash[:content_type] hash[:content_type]
......
...@@ -335,6 +335,12 @@ class S3Test < Test::Unit::TestCase ...@@ -335,6 +335,12 @@ class S3Test < Test::Unit::TestCase
should "return a relative URL for Rails to calculate assets host" do should "return a relative URL for Rails to calculate assets host" do
assert_match %r{^avatars/stringio\.txt}, @dummy.avatar.url 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 end
context "Generating a secure url with an expiration" do context "Generating a secure url with an expiration" do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment