rails images aws ruby-on-rails-3 file-upload carrierwave

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)