Как я могу обработать загруженные пользователем файлы фотографий для приложения Rails (используя скрепку) на Heroku? - PullRequest
1 голос
/ 26 января 2012

Итак, я создаю приложение Rails, которое позволяет пользователям создавать элементы, и у каждого элемента есть вложение изображения, которое обрабатывается с помощью самоцвета Paperclip. По умолчанию гем Paperclip сохраняет фотографии в общую папку как в исходном (и в виде эскиза) виде.

Я вижу, как это может быстро выйти из-под контроля с точки зрения места для хранения, учитывая, что фотографии могут быть довольно большими.

Мои вопросы:

1) Сколько места позволит мне Heroku для изображений в общей папке?

2) Если Heroku позволяет вам хранить только определенное количество данных в этой папке (что, я уверен, так и есть), как я могу обработать хранилище фотографий для сайта, на котором, вероятно, будет много изображений? Возможно, удаленно? Сжатие? (Конкретно было бы неплохо, так как я совершенно новичок в хранении изображений.)

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Heroku имеет файловую систему только для чтения для вашего приложения. Используйте Amazon S3 для хранения загруженных изображений. Скрепка имеет отличную поддержку S3 . Проверьте это Heroku руководство .

0 голосов
/ 26 января 2012

Как сказал Крис, вы захотите использовать сторонний сервис, такой как S3, и если вы в конечном итоге будете использовать Paperclip, то в конечном итоге у вас будет что-то похожее на этот пример в вашей модели.

has_attached_file :photo,
        :styles => { :thumb=> "100x100", :small  => "300x300" },
        :storage => :s3,
        :s3_credentials => "#{Rails.root.to_s}/config/s3.yml",
        :path => "/:id/:style/:filename"

И в вашем конфигурационном каталоге у вас будет файл учетных данных s3.yml, который будет выглядеть так:

development:
   bucket: blahblah
   access_key_id: sfoi40j8elkfv08hwo
   secret_access_key: DJyWuRtsfoi40j8elkfv08hwos0m8qt

production:
   bucket: blahblah
   access_key_id: sfoi40j8elkfv08hwo
   secret_access_key: DJyWusfoi40j8elkfv08hwos0m8qt
...