ruby on rails 3 - images - ¿Cómo puedo hacer que carrierwave no guarde el archivo original después de procesar las versiones?
rails image upload (5)
Solía tener dos versiones y me di cuenta de que no necesitaba el original
Entonces, en lugar de tener
version :thumb do
process :resize_to_limit => [50, 50]
end
version :normal do
process :resize_to_limit => [300,300]
end
Quité: normal y agregué esto
process :resize_to_limit => [300, 300]
Ahora el original se guarda en el tamaño que necesito y no tengo una tercera imagen no utilizada en el servidor
Estoy utilizando CarrierWave para mis cargas de archivos en Rails 3.1, y estoy buscando una manera de ahorrar espacio en el servidor. Muchas de las fotos que se suben tienen más de 20 MB, por lo que después de procesarlas hasta 1024 x 1024, me gustaría eliminar el original. ¿Hay alguna manera fácil de hacerlo en la clase de subida?
Gracias, --Mark
Puede definir una devolución de llamada after_save en su modelo y eliminar la foto ..
No conozco tu modelo, pero algo así podría funcionar si lo personalizas:
class User << ActiveRecord::Base
after_create :convert_file
after_create :delete_original_file
def convert_file
# do the things you have to do
end
def delete_original_file
File.delete self.original_file_path if File.exists? self.original_file_path
end
end
class FileUploader < CarrierWave::Uploader::Base
after :store, :delete_original_file
def delete_original_file(new_file)
File.delete path if version_name.blank?
end
include CarrierWave::RMagick
storage :file
.
. # other configurations
end
¡todo el mundo! La solución seleccionada no funciona para mí. Mi solución:
after :store, :remove_original_file
def remove_original_file(p)
if self.version_name.nil?
self.file.delete if self.file.exists?
end
end
Es un poco hack pero tiene una ventaja de rendimiento
my_uploader.send :store_versions!, open(my_file)