Предварительная компиляция загруженных ресурсов

У меня есть приложение rails 3.1, в которое пользователи загружают изображения. Я храню их в /assets/images, так как это путь, который ищет image_tag вместо public/images.

В разработке все работает нормально, но я развернулся на Heroku и выдает эту ошибку:

ActionView::Template::Error (image_name.jpeg не компилируется)

Как правильно поступить в такой ситуации? Есть ли способ скомпилировать изображения после загрузки или я должен хранить их где-то еще?


person Ibrahim Muhammad    schedule 29.12.2011    source источник


Ответы (2)


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

  • Вы не должны использовать image_path с загруженными изображениями, так как это предполагает, что он просматривает файловую систему. Если вы используете image_tag, вы должны передать полный URL-адрес, а не только имя изображения.

person yfeldblum    schedule 29.12.2011

Используете ли вы Carrwave для загрузки изображений? Вы можете хранить их на amazon S3 достаточно легко с помощью несущей волны. Инструкции Carrierwave Другие решения также имеют легкодоступное хранилище S3.

Heroku НЕ позволит вам хранить файлы в файловой системе. Бегать

RAILS_ENV=production bundle exec rake assets:precompile

чтобы скомпилировать ваши ресурсы локально, добавить в git и отправить в героку, но вы не можете добавлять изображения позже через свое приложение на героку. Если вы загрузите их в папку /temp, они останутся там на короткое время или до тех пор, пока вы повторно не развернете/обновите свой код, я полагаю.

person Yuri    schedule 29.12.2011