2012-03-17 71 views
1

上传头像时,我有:导轨 - errno的:: EACCES(拒绝)用户

  • Heroku的
  • 轨道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]) 

Tryed使this OM本地计算机和推到Heroku的和失败的

我还能做什么?

回答

2

您不能将文件存储在Heroku的服务器上,因此上传并尝试将文件保存到本地文件系统将不起作用。

相反,你应该上传文件到S3。 Heroku documentationCarrierWave documentation都有关于配置CarrierWave通过雾将文件上传到S3的信息。查看文档,获得一个S3账户,并在那里上传文件。

+0

S3的成本是多少? – 2012-03-19 15:09:18

+0

查看http://aws.amazon.com/s3/pricing/获取答案。 – Veraticus 2012-03-19 15:22:26

0

当你推到Heroku时,你的应用程序被编译成一个在只读文件系统上运行的slug,所以你不能写任何东西(即你甚至不能写你自己的应用程序的public目录)。至make Carrierwave work on Heroku,您必须在Uploader类中设置cache_dir。看看this answer,特别是说“这两条线修好了”的评论:

config.root = Rails.root.join('tmp') 
config.cache_dir = 'carrierwave' 
相关问题