Rails - Errno :: EACCES(权限被拒绝)上传用户的头像时

时间:2012-03-17 11:02:18

标签: ruby-on-rails heroku carrierwave

我有:

  • heroku上
  • rails 3
  • carrierwave

在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并失败

我还能做什么?

2 个答案:

答案 0 :(得分:2)

您无法在Heroku的服务器上存储文件,因此上传并尝试将文件保存到本地文件系统将无法正常工作。

相反,您应该将文件上传到S3。 Heroku documentationCarrierWave 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'