Разные расширения файлов для разных версий

Я использую операторскую волну для загрузки изображений. Мне нужно, чтобы моя основная версия изображения оставалась в исходном формате, а другие версии были преобразованы в gif.

На данный момент я делаю что-то вроде этого:

 def filename
   change_ext_to_gif(super)
 end

 def change_ext_to_gif(ext)
   ext.chomp(File.extname(ext)) + ".gif"
 end

 version :preview do
   process :resize_to_fill => [60, 60]
   process :convert => "gif"
 end

 version :full do
   process :resize_to_limit => [320, 320]
   process :convert => "gif"
 end

 version :mobile do
   process :resize_to_limit => [72, 96]
   process :convert => "gif"
 end

Конечно, это также меняет расширение моего исходного файла. Есть ли способ решить эту проблему? Думаю, мне нужно переопределить некоторые методы в блоках версии. Но я не смог их понять (я попытался переопределить имя файла и URL-адрес, это помогает, но предотвращает удаление файлов версии).


person miros    schedule 13.03.2011    source источник


Ответы (1)


Вы можете изменить имя файла, которое используется для каждой версии, например:

 version :mobile do
   process :resize_to_limit => [72, 96]
   process :convert => "gif"
   def full_filename(for_file = model.logo.file)
     "fiename here"
   end
 end

Поэтому просто оставьте исходное имя файла по своему усмотрению, а затем измените его для каждой версии. На вики есть еще примеры:

https://github.com/jnicklas/carrierwave/wiki/How-To%3A-Move-version-name-to-end-of-filename%2C-instead-of-front

person Mario Visic    schedule 17.08.2011