Я относительно новичок в рельсах. У меня был камень paperclip, который отлично работал в разработке на местном уровне, и пользователи без проблем загружали аватаров. Я развернулся к производству через Heroku, а также не ошибся при создании пользователей с загруженными изображениями при регистрации, но все загруженные изображения появились в виде недостающих эскизов на производстве. Я читал и, по-видимому, в производстве со скрепкой, я должен использовать что-то под названием Amazon S3 (поправьте меня, если есть лучший способ), поэтому я пытаюсь это сделать.Отсутствует ошибка региона при загрузке изображения с помощью paperclip gem Amazon S3
Здесь ошибка я получаю, когда я пытаюсь создать пользователь с загруженным изображением:
Aws::Errors::MissingRegionError in Devise::RegistrationsController#create
missing region; use :region option or export region name to ENV['AWS_REGION']
здесь является то, что у меня есть в моей производственной и развитии среды
config.paperclip_defaults = {
storage: :s3,
s3_host_name: 's3-ap-southeast-1.amazonaws.com',
s3_credentials: {
bucket: ENV['AWS_S3_BUCKET'],
s3_region: ENV['S3_REGION'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
}
Здесь является то, что у меня в paperclip.rb инициализаторе
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
Paperclip::Attachment.default_options[:s3_host_name] = 's3-ap-southeast-1.amazonaws.com'
примечание (я на Ближнем востоке)
и вот что у меня есть в моей модели пользователя
#paperclip gem storing avatar images
has_attached_file :avatar,
:bucket => 'bucket_name',
:styles => {
:thumb => ['100x100#', :jpg, :quality => 70],
:preview => ['480x480#', :jpg, :quality => 70],
:large => ['600>', :jpg, :quality => 70],
:retina => ['1200>', :jpg, :quality => 30]
},
:convert_options => {
:thumb => '-set colorspace sRGB -strip',
:preview => '-set colorspace sRGB -strip',
:large => '-set colorspace sRGB -strip',
:retina => '-set colorspace sRGB -strip -sharpen 0x0.5'
}
Я посмотрел на вопросы, касающиеся S3 Paperclip Gem и отсутствующими ошибку региона, но никогда не видел, как это изречение ошибка в контроллере DEViSE , Я думаю, это связано с тем, что связь между: аватаром с пользователем, который контролируется приложением, и у меня нет отдельного пользовательского контроллера.
Я чувствую, что должен быть более простой способ решить проблему отсутствия изображений в производстве с помощью скрепки скрепки, чем с использованием этой амазонки S3. Особенно, если все работает нормально и денди локально без Amazon S3. Любые альтернативные предложения? Идеи?
Спасибо за информативный ответ и решение. Я последовал вашим советам и установил v1 aws и изменил все ссылки Aws на AWS и определил регион. Это фиксировало ошибку области, которую я получал, и заменил ее аналогичной ошибкой.NameError в Devise :: RegistrationsController # create uninitialized constant AWS :: S3 :: Resource –
Эта новая ошибка также ссылается на контроллер регистрации приложений так же, как и на старую ошибку, что неудивительно, потому что ошибка возникает при попытке зарегистрироваться новый пользователь с загрузкой изображения. Я не создал контроллер регистрации. Вы бы рекомендовали создать контроллер регистрации для решения проблемы? –
Это странно. Причиной ошибки является то, что AWS SDK v1 не имеет класса S3 :: Resource ... Я посмотрел, что произошло в источнике paperclip, и похоже, что они удалили тест на версию AWS SDK. Если вы перейдете на paperclip 4.3.0, все должно работать (он использует S3 :: Resource, только если версия SDK не v1, и я использую ее в одном из моих проектов успешно с S3). – taglia