From 0456ecf555bb50f80b9912514481ba431b3e6992 Mon Sep 17 00:00:00 2001 From: Ian Lotinsky Date: Fri, 19 Sep 2008 19:04:45 -0400 Subject: [PATCH] rename thumbnails on file_system rename --- .../attachment_fu/backends/file_system_backend.rb | 11 +++++++++-- test/backends/file_system_test.rb | 16 ++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/technoweenie/attachment_fu/backends/file_system_backend.rb b/lib/technoweenie/attachment_fu/backends/file_system_backend.rb index f746ae7..0a4de4e 100644 --- a/lib/technoweenie/attachment_fu/backends/file_system_backend.rb +++ b/lib/technoweenie/attachment_fu/backends/file_system_backend.rb @@ -68,7 +68,7 @@ module Technoweenie # :nodoc: logger.warn $!.backtrace.collect { |b| " > #{b}" }.join("\n") end - # Renames the given file before saving + # Renames the given file and any thumbnails def rename_file return unless @old_filename && @old_filename != full_filename if save_attachment? && File.exists?(@old_filename) @@ -77,9 +77,16 @@ module Technoweenie # :nodoc: FileUtils.mv @old_filename, full_filename end @old_filename = nil + if thumbnailable? + thumbnails.each do |thumb| + thumb.filename = filename + thumb.filename = thumb.thumbnail_name_for(thumb.thumbnail) + thumb.save + end + end true end - + # Saves the file to the file system def save_to_storage if save_attachment? diff --git a/test/backends/file_system_test.rb b/test/backends/file_system_test.rb index d3250c1..b1eacfc 100644 --- a/test/backends/file_system_test.rb +++ b/test/backends/file_system_test.rb @@ -77,4 +77,20 @@ class FileSystemTest < Test::Unit::TestCase end test_against_subclass :test_should_delete_old_file_when_renaming, FileAttachment + + def test_should_rename_old_thumbnail_files_when_renaming(klass = ImageWithThumbsFileAttachment) + attachment_model klass + attachment = upload_file :filename => '/files/rails.png' + old_thumbnail_filename = attachment.full_filename(:thumb) + assert_not_created do + attachment.filename = 'rails2.png' + attachment.save + assert File.exists?(attachment.full_filename(:thumb)), "#{attachment.full_filename(:thumb)} does not exist" + assert !File.exists?(old_thumbnail_filename), "#{old_thumbnail_filename} still exists" + assert !attachment.reload.size.zero? + assert_equal 'rails2_thumb.png', attachment.thumbnail_name_for(:thumb) + end + end + + test_against_subclass :test_should_rename_old_thumbnail_files_when_renaming, ImageWithThumbsFileAttachment end \ No newline at end of file -- 1.5.4.3