Ошибка скрепки AWS S3 и рельсы 3.0 - PullRequest
1 голос
/ 19 августа 2011

Во-первых, большое спасибо, что нашли время, чтобы прочитать мой вопрос. Спасибо! Похоже, у меня возникли проблемы с реализацией AWS S3 в моем веб-приложении. У меня развернуто приложение ROR, o heroku, и я хотел бы позволить пользователям загружать изображение профиля в свой профиль.

Я установил imagemagick и скрепку для обработки вложений. Тогда кто-то сообщил мне, что heroku не принимает загрузки и что мне нужно подписаться на aws-s3. Это имело смысл. Поэтому я подписался на aws и добавил следующий код в свой проект:

user.rb (модель)

has_attached_file :avatar, 
                  :styles => {:small => "70x70>"},
                  :storage => :s3,
                  :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
                  :path => ":attachment/:id/:style/:basename.:extension"


validates_attachment_size :avatar, :less_than => 1.megabytes
validates_attachment_content_type :avatar, :content_type => ['image/jpeg', 'image/png']

s3.yml (файл находится в папке config) примечание: все эти блоки существуют на моем aws-s3

development:
  bucket: my_avatar-dev
  access_key_id: amazonaccesskey
  secret_access_key: amazon_secret_access_key
test:
  bucket: myapp_avatar-test
  access_key_id: amazonaccesskey
  secret_access_key: amazon_secret_access_key
production:
  bucket: myapp_avatar-pro
  access_key_id: amazonaccesskey
  secret_access_key: amazon_secret_access_key

Gemfile

gem 'aws-s3'

Когда я запускаю приложение в среде разработки (localhost), все работает нормально ... Я проверил AWS, и мои загрузки появляются там; однако, когда я развертываю свое приложение на героку, оно ломается. Чтобы уточнить, приложение загружает экран входа в систему, но как только пользователь входит в систему, приложение прерывается и перенаправляет на страницу ошибки 500: «Извините, но что-то пошло не так. Мы получили уведомление об этой проблеме и мы посмотрим на это в ближайшее время. "

Когда я скрываю следующий код (и заменяю: путь на какое-то другое значение) и переустанавливаю ... приложение загружается, но, очевидно, ему не хватает функциональности, необходимой для перенаправления на aws-s3.

:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => ":attachment/:id/:style/:basename.:extension"

Как я уже говорил, я довольно плохо знаком с рельсами ... поэтому я не уверен, что делаю неправильно. Я должен был связать s3.yml где-то еще, маршрут или что-то? Может быть, это то, что мне нужно сделать при развертывании? Я хотел бы поблагодарить всех, кто может мне помочь, и я благодарен за ваше время!

...