2011-03-30 7 views
59

Tengo un modelo simple que monta una carga de Carrierwave. Todo funciona bien en el desarrollo, pero obtengo un método indefinido "image_will_change!" error en heroku.Método no definido `image_will_change! ' para CarrierWave en Heroku

class Receipt < ActiveRecord::Base 
    mount_uploader :image, ImageUploader 
end 

class ImageUploader < CarrierWave::Uploader::Base 
    storage :fog 
    def store_dir 
    "receipts/saved" 
    end 
end 

Tengo el cache_dir establecido también de acuerdo con la Wiki Carrierwave.

receipt.image = File.open "public/images/test.jpg" #works fine in development, fails in heroku 
+0

Me encontré con el mismo mensaje de error, y aunque lo hice rake db: migrar, el error aún no desapareció. Así que terminé actualizando a la nueva pila Cedar, y funcionó. Sin embargo, sospecho que si eliminé la base de datos y rehace toda la migración, también habría funcionado. – sivabudh

Respuesta

139

Es probable que su db en heroku no tenga la columna de imagen en la tabla de recibos.

+3

¡Eso funcionó! Olvidé que modifiqué una migración para incluir esta cadena. –

+5

Y, si obtiene un error como este cuando está ejecutando pruebas de rspec, es posible que haya olvidado ejecutar '' 'rake db: test: prepare'''. –

8

Es probablemente porque se le olvidó ejecutar:

rake db:migrate 
18

Incluso después de ejecutar la migración de heroku, persistió el error.

Encontré que se requería un comando de reinicio heroku para vencer el error para siempre.

heroku restart 
+1

Solo quería que supieras que me salvaste la vida. Estaba * esto * cerca de saltar de la ventana de mi oficina con frustración antes de encontrar esto. – vlasits

+0

Esta respuesta también se debe marcar como correcta. –

+0

¡Guau! Encontrado esto después de 30 minutos de búsqueda! ¡Trabajó para mi! – newbie

Cuestiones relacionadas