Rails - Errno :: EACCES (В доступе отказано) при загрузке аватара для пользователя - PullRequest
1 голос
/ 17 марта 2012

У меня есть:

  • heroku
  • rails 3
  • carrierwave

На локальном хосте загрузка отлично работает.Но это не работает на героку.Мои журналы:

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])

Попытка сделать этот ом локальный компьютер и нажать на геройку и не удалось

Что еще я могу сделать?

Ответы [ 2 ]

2 голосов
/ 17 марта 2012

Вы не можете хранить файлы на серверах Heroku, поэтому загрузка и попытка сохранить файлы в локальной файловой системе не будут работать.

Вместо этого вам, вероятно, следует загрузить файлы на S3. Документация Heroku и Документация CarrierWave содержат информацию о настройке CarrierWave для загрузки файлов в S3 через туман. Ознакомьтесь с документацией, получите учетную запись S3 и загрузите туда свои файлы.

0 голосов
/ 26 марта 2012

Когда вы нажимаете на Heroku, ваше приложение компилируется в слаг, который работает в файловой системе только для чтения - поэтому вы не можете писать в нее вообще (то есть вы даже не можете писать в каталог public вашего собственного приложения).Чтобы заставить Carrierwave работать на Heroku , вы должны установить cache_dir в своем классе Uploader.Посмотрите этот ответ и, в частности, комментарий, который говорит: "Эти две строки исправили это":

config.root = Rails.root.join('tmp')
config.cache_dir = 'carrierwave'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...