Commit c21f0fbf by Mike Burns

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

parents f8c24445 3b2b9bcf
......@@ -30,7 +30,12 @@ module Paperclip
# 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:
......
......@@ -110,6 +110,7 @@ module Paperclip
# 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
......
......@@ -257,7 +257,10 @@ module Paperclip
# 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)
......
......@@ -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#" }
......
......@@ -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]
......
......@@ -335,7 +335,13 @@ class S3Test < Test::Unit::TestCase
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
......
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