我有:
在localhost上传工作正常。但它不适用于heroku。 我的日志是:
Completed 500 Internal Server Error in 13ms
Errno::EACCES (Permission denied - /app/public/uploads/tmp):
app/controllers/users_controller.rb:73:in `update'
cache: [POST /users/2] invalidate, pass
我的73行是:
if @user.update_attributes(params[:user])
尝试使this om本地计算机并推送到heroku并失败
我还能做什么?
答案 0 :(得分:2)
您无法在Heroku的服务器上存储文件,因此上传并尝试将文件保存到本地文件系统将无法正常工作。
相反,您应该将文件上传到S3。 Heroku documentation和CarrierWave documentation都有关于配置CarrierWave以通过雾将文件上传到S3的信息。查看文档,获取S3帐户,然后在那里上传文件。
答案 1 :(得分:0)
当您推送到Heroku时,您的应用程序被编译成一个在只读文件系统上运行的slug - 因此您无法写入任何内容(即您甚至无法写入自己的应用程序public
目录)。要make Carrierwave work on Heroku,您必须在cache_dir
课程中设置Uploader
。看一下this answer,特别是评论说"这两行修正了它":
config.root = Rails.root.join('tmp')
config.cache_dir = 'carrierwave'