Skip to content
This repository has been archived by the owner on Jul 13, 2023. It is now read-only.

Commit

Permalink
Force Tempfile extension when creating a Tempfile
Browse files Browse the repository at this point in the history
This should fix the problem on animated file detection.

Fixes #851
  • Loading branch information
sikachu committed May 4, 2012
1 parent 50635d3 commit 48736ce
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 9 deletions.
2 changes: 2 additions & 0 deletions NEWS
@@ -1,5 +1,7 @@
Unreleased:

* Bug fix: ThumbnailProcessor now correctly detects and preserve animated GIF.
* Bug fix: File extension is now preserved in generated Tempfile from adapter.
* Bug fix: Uploading file with unicode file name now won't raise an error when
logging in the AWS is turned on.
* Bug fix: Task "paperclip:refresh:missing_styles" now work correctly.
Expand Down
4 changes: 3 additions & 1 deletion lib/paperclip/io_adapters/attachment_adapter.rb
Expand Up @@ -52,7 +52,9 @@ def cache_current_values
end

def copy_to_tempfile(src)
dest = Tempfile.new(src.original_filename)
extension = File.extname(src.original_filename)
basename = File.basename(src.original_filename, extension)
dest = Tempfile.new([basename, extension])
dest.binmode
if src.respond_to? :copy_to_local_file
src.copy_to_local_file(:original, dest.path)
Expand Down
4 changes: 3 additions & 1 deletion lib/paperclip/io_adapters/file_adapter.rb
Expand Up @@ -56,7 +56,9 @@ def path
private

def copy_to_tempfile(src)
dest = Tempfile.new(original_filename)
extension = File.extname(original_filename)
basename = File.basename(original_filename, extension)
dest = Tempfile.new([basename, extension])
dest.binmode
FileUtils.cp(src.path, dest.path)
dest
Expand Down
4 changes: 3 additions & 1 deletion lib/paperclip/io_adapters/stringio_adapter.rb
Expand Up @@ -47,7 +47,9 @@ def path
private

def copy_to_tempfile(src)
dest = Tempfile.new(original_filename)
extension = File.extname(original_filename)
basename = File.basename(original_filename, extension)
dest = Tempfile.new([basename, extension])
dest.binmode
while data = src.read(16*1024)
dest.write(data)
Expand Down
4 changes: 3 additions & 1 deletion lib/paperclip/io_adapters/uploaded_file_adapter.rb
Expand Up @@ -50,7 +50,9 @@ def path
private

def copy_to_tempfile(src)
dest = Tempfile.new(original_filename)
extension = File.extname(original_filename)
basename = File.basename(original_filename, extension)
dest = Tempfile.new([basename, extension])
dest.binmode
FileUtils.cp(src.path, dest.path)
dest
Expand Down
12 changes: 7 additions & 5 deletions lib/paperclip/tempfile.rb
Expand Up @@ -7,14 +7,16 @@ class Tempfile < ::Tempfile
# taken from the comments on this blog post:
# http://marsorange.com/archives/of-mogrify-ruby-tempfile-dynamic-class-definitions
#
# This is Ruby 1.8.7's implementation.
def make_tmpname(basename, n)
# This is Ruby 1.9.3's implementation.
def make_tmpname(prefix_suffix, n)
if RUBY_PLATFORM =~ /java/
case basename
case prefix_suffix
when String
prefix, suffix = prefix_suffix, ''
when Array
prefix, suffix = *basename
prefix, suffix = *prefix_suffix
else
prefix, suffix = basename, ''
raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
end

t = Time.now.strftime("%y%m%d")
Expand Down

0 comments on commit 48736ce

Please sign in to comment.