Скрепка Rails с s3 - Неверный аргумент - PullRequest
1 голос
/ 20 февраля 2012

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

Вот настройка соединения в пользовательской модели:

has_attached_file :avatar, 
:styles => { :small => "150x150#", :medium => "300x300#" },
:storage => :s3,
:s3_credentials => Rails.root.join('config/s3.yml')

Тогда вот файл s3.yml:

bucket: sghub      
access_key_id: ###
secret_access_key: #####

Конечно, в свой gemfile я добавил:

gem 'paperclip'
gem 'aws-s3', :require => 'aws/s3'

Приложение развернуто на Heroku, поэтому ошибка, которую я получаю от команды heroku logs, выглядит следующим образом:

2012-02-20T07:13:58+00:00 app[web.1]: AWS::S3::PermanentRedirect (The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.)

Также в режиме разработки страница ошибки выглядит так:

Errno::EINVAL in UsersController#update
Invalid argument

Также кажется, что файлы не загружаются на s3, так как они не видны в консоли управления в моем ведре.Теперь я понятия не имею, как я пытался настроить все, как во всех руководствах и документации.Есть идеи?

1 Ответ

0 голосов
/ 20 февраля 2012

Параметр :bucket должен находиться вне ключа :s3_credentials в хэше параметров.Сделайте так, чтобы он выглядел так:

has_attached_file :avatar, 
    :styles         => { :small => "150x150#", :medium => "300x300#" },
    :storage        => :s3,
    :s3_credentials => Rails.root.join('config/s3.yml')
    :bucket         => 'sghub'

И удалите bucket из config/s3.yml

Вот документы: http://rubydoc.info/gems/paperclip/Paperclip/Storage/S3

...