Rails – 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])
尝试制作本地计算机并推送到heroku并失败
我还可以做些什么?
您无法在Heroku的服务器上存储文件,因此上传并尝试将文件保存到本地文件系统将无法正常工作。
相反,您应该将文件上传到S3。 Heroku文档和CarrierWave文档都有关于配置CarrierWave以通过雾将文件上传到S3的信息。 查看文档,获取S3帐户,然后在那里上传文件。
当您推送到Heroku时,您的应用程序被编译成一个在只读文件系统上运行的slug – 因此您无法写入任何内容(即您甚至无法写入您自己的应用程序的public
目录)。 要使Carrierwave在Heroku上运行 ,必须在Uploader
类中设置cache_dir
。 看看这个答案 ,特别是评论说“这两行固定它”:
config.root = Rails.root.join('tmp') config.cache_dir = 'carrierwave'
- CarrierWave:为所有版本化文件创建相同的唯一文件名
- Excon ::错误::禁止(预期(200)实际(403禁止)
- CarrierWave默认图像的完整url
- Mongoid和载波
- Carrierwave + repage选项不起作用
- Rails 4 – 如何使用carrierwave在froala编辑器中上传图像?
- Carrierwave_Direct的direct_upload_form_for为FileUploader返回未定义的方法`model_name’:Class
- Rails 4,Carrierwave-aws,图像在本地上传到amazon s3但未投放到生产中(Openshift)
- 跳过carrierwave Integirty和Processingvalidation