Мы уже создали приложение rails, в котором есть несколько пользователей и изображение для каждого из них. Выполняя всю работу разработчика на нашем локальном хосте, у нас есть рабочие семена для пользователей и фотографий ... но теперь, когда мы пытаемся использовать S3 для хранения изображений, мы сталкиваемся с ошибками во время ... всегда во время "семени" шаг миграции, при этом:
rake db: мигрировать: сбросить
Извиняюсь за вопрос, но мы ударяем по этому вопросу в течение 11 часов, изучая все связанные вопросы стека по этому вопросу. У многих подобных постов была ошибка NoSuchBucket и другие типы проблем, но мы ни одно из предложенных изменений не устранили нашу проблему ... возможно, это связано с новейшими версиями драгоценных камней, которые мы используем?
Мы используем Rails 3.0.4, Ruby 1.8.7, Paperclip 2.3.8, aws-s3 0.6.2
Мы добавляем семена для первоначальных пользователей и фотографии для каждого пользователя, используя наш файл seed.rb в папке / migrate /. Это всегда хорошо работало при хранении файлов и изображений на локальном компьютере (с использованием скрепки, но не S3). Мы также проверили удаление файла seed и просто создание нового пользователя с работающим приложением и получили ту же ошибку:
Учетные данные не являются путем, файлом или
Хэш
Для пользовательского модуля мы протестировали оба варианта, в которых мы устанавливаем следующие ключи S3 через файл (a) yml и (b) непосредственно в пользовательской модели.
access_key_id: «секретный»
secret_access_key: 'secret'
Мы пытались сделать это от нашего локального хоста (еще не жившего на Heroku), и мы также попытались запустить это через Heroku.
Мы, похоже, попробовали каждую перестановку расположения этих клавиш, но ошибка, которую мы чаще всего получаем, заключается в следующем:
не может конвертировать модуль в хэш
Поиск в сообщении об ошибке возвращает ноль результатов, поэтому мы не знаем, что там происходит. Это была самая расстраивающая часть ... казалось бы, каждая попытка вернула нас к этой ошибке.
Мы также попробовали оба:
(1) жесткое кодирование клавиш доступа в пользовательской модели, как:
:access_key_id => ENV['accesskeyid'],
:secret_access_key => ENV['secretaccesskey'],
В этом случае мы часто получаем эту ошибку:
Вы не предоставили оба необходимых ключа доступа. Пожалуйста, предоставьте
access_key_id и secret_access_key.
Разочарование, потому что у нас всегда были оба списка, проверенные с кавычками и без, изменение порядка и т. Д.
Мы попробовали это как (а) с ENV ['accesskeyid'], так и (б) без них ... просто
blahblah => 'accesskeyid'.
и (2) вставка ключей в файл yml, например:
has_attached_file :photo,
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => "/:photo/:filename"
с этим в файле yml:
development:
access_key_id: accesskeyid
secret_access_key: secretaccesskey
bucket: ourbucketname
production:
access_key_id: accesskeyid
secret_access_key: secretaccesskey
bucket: ourbucketname
Мы попробовали это с одинарными кавычками вокруг клавиш и без.
Мы также попытались определить сегмент в модели, а не в файле yml, и получили ту же ошибку.
и (3), настраивая его так:
if Rails.env == "производство"
S3_CREDENTIALS = {: access_key_id => ENV ['S3_KEY'],: secret_access_key => ENV ['S3_SECRET'],: bucket => "ourbucket"} else
S3_CREDENTIALS = Rails.root.join ("config / s3.yml")
конец
has_attached_file: фотография,
: storage =>: s3,
: styles => {: small => "50x50>",: thumb => "75x75>",: medium =>
"400x400>"},
: path => "/: photo /: filename"
С таким же содержимым в нашем файле yml.
Это дало нам эту ошибку:
учетные данные не являются файлом, путем или хэшем
Естественно, мы четыре раза проверили, что у нас есть правильные ключи доступа (из нашей учетной записи AWS), и протестировали несколько различных способов настройки хэша, но так и не получили того, что хотели.
Вот соответствующая часть Gemfile:
gem 'aws-s3',: require => 'aws / s3' #Для хранения изображений на Amazon
драгоценный камень "скрепка"
В качестве еще одной попытки мы попытались использовать гем right_aws в Gemfile, но это привело к этой ошибке:
нет такого файла для загрузки - aws / s3 (Вы
возможно, потребуется установить гем aws-s3)
Обратите внимание, что мы делали все это и исправляли все эти ошибки, выполняя миграцию с локального хоста, а не из живого приложения Heroku, но даже не смогли пройти этот простой шаг «начальных пользователей».
В настоящее время наше ведро называется media.oururl.com. Есть ли какая-то проблема с наличием точек в имени сегмента?
Собираюсь спросить об этом и героев, ребята, но, учитывая, насколько удивительным является это сообщество, я надеюсь, что один из вас знает, что мы делаем с ней не так.
ОЧЕНЬ высоко ценится - и, надеюсь, это поможет тем, кто следует за нами.