我正在使用 Rails 3.2.6 并使用carrierwave 上传图片。当我上传图片时,它的显示效果很好,而且它的图片网址也运行良好。但是当我在heroku上推送下一个git commit时。
git push staging master
比我已经上传的所有图像都没有显示并且它的图像路径不起作用为什么?
请任何人都可以说出问题所在。
纳克斯
我正在使用 Rails 3.2.6 并使用carrierwave 上传图片。当我上传图片时,它的显示效果很好,而且它的图片网址也运行良好。但是当我在heroku上推送下一个git commit时。
git push staging master
比我已经上传的所有图像都没有显示并且它的图像路径不起作用为什么?
请任何人都可以说出问题所在。
纳克斯
您是否使用 s3 设置了carrierwave(https://github.com/jnicklas/carrierwave#using-amazon-s3)?Heroku 有一个只读文件系统 (https://devcenter.heroku.com/articles/s3)。
虽然您的上传将起作用 - 当您推送新代码或重新启动应用程序时,您将丢失任何上传。
Heroku 使用临时文件系统,因为每个 dyno 都会收到原始部署代码的单独副本(slug),因此上传只会存在于处理上传的 dyno 上(https://devcenter.heroku.com/articles/dynos#临时文件系统)。
您需要使用外部持久数据存储,如 Amazon S3、Rackspace 文件等 - 幸运的是,使用 Carrierwave 更新它以使用它是微不足道的,因为它支持开箱即用。