Heroku и carrierwave не загружают мою конфигурацию s3 - PullRequest
3 голосов
/ 30 марта 2011

У меня есть приложение на Heroku, которое использует драгоценный камень Carrierwave для загрузки изображений в S3.

Я установил конфигурацию s3 в инициализаторе с именем carrierwave.rb

CarrierWave.configure do |config|
  config.s3_access_key_id = 'XXXXXXXXXXXXXXXXXXXX'
  config.s3_secret_access_key = 'XXXXXXXXXXXXXXXXX'
  config.s3_bucket = 'XXXXX'
  config.storage = :s3
end

Это прекрасно работает при разработке на моем локальном компьютере, однако после развертывания в Heroku появляется следующая ошибка

A Errno::EACCES occurred in events#update:

Permission denied - /app/public/uploads
/usr/ruby1.8.7/lib/ruby/1.8/fileutils.rb:243:in `mkdir'

Очевидно, что он пытается записать на сервер heroku, который доступен только для чтения, и не выбирает мои настройки s3.

Кто-нибудь знает, как я могу заставить геройку отправлять свои файлы на s3?

Ответы [ 2 ]

7 голосов
/ 29 апреля 2011

Из CarrierWave wikki:

Heroku has a read-only filesystem, so uploads must be stored on S3 and cannot be cached in the public directory.

You can work around this by setting the cache_dir in your Uploader classes to the tmp directory:

Извлеките https://github.com/jnicklas/carrierwave/wiki и прокрутите до нижней части с надписью «CarrierWave on Heroku», чтобы увидеть, как они это настраивают.Надеюсь, это кому-нибудь поможет.

6 голосов
/ 30 марта 2011

Вы смотрели на это демонстрационное приложение.

В частности, загруженный класс здесь

...