Настройка имени домена в стиле домена (bucket.s3.amazonaws.com) с помощью Rails и Paperclip

Скрепка док о вариантах URL:

You can choose to have the bucket's name placed domain-style (bucket.s3.amazonaws.com) or path-style (s3.amazonaws.com/bucket).

Как бы выглядела установка, чтобы на самом деле имя корзины располагалось в стиле домена? Я не могу заставить скрепку генерировать URL-адреса, такие как bucket.s3.amazonaws.com вместо s3.amazonaws.com/bucket.

 michaelrshannon10 июл. 2012 г., 02:02
Я также столкнулся с этой проблемой - было бы интересно узнать, решили ли вы ее!

Ответы на вопрос(3)

Просто установите это так:

Paperclip::Attachment.default_options[:url] = ':s3_domain_url'

Или вот так:

Paperclip::Attachment.default_options.merge!(
  :url => ':s3_domain_url'
)
 30 июл. 2012 г., 17:09
Вы также должны определить:path вариант с:urlпотому что по умолчанию один включает":url" что вызываетPaperclip::Errors::InfiniteInterpolationError исключение. Ошибка скрепки автоматически исправляет:path опция для хранения S3 ... если вы не используете: s3 _ * _ url в интерполяции:url (да, это ошибка). Используйте это, например:"/:class/:attachment/:id_partition/:style/:filename'".
 huoxito21 июн. 2012 г., 05:32
Я попробовал это. Но он возвращает эту ошибку Paperclip :: Errors :: InfiniteInterpolationError Документы также заставляют меня думать, что это было бы решениемrubydoc.info/gems/paperclip/Paperclip/Storage/S3, Но это не работает.
 05 авг. 2014 г., 03:03
@JulienPortalier В конце вашего примера ошибочная одинарная кавычка, которая отбросила меня на пару часов. Правильная настройка::path => "/:class/:attachment/:id_partition/:style/:filename"

добавлять:url а также:path кPaperclip параметры по умолчанию в вашемapplication.rb или жеenvironment.rb

config.paperclip_defaults = {
  storage: :s3,
  s3_credentials: {
    bucket: ENV['MY_S3_BUCKET_NAME'],
    access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
  },
  url: ':s3_domain_url',                                     # ADD THIS
  path: '/:class/:attachment/:id_partition/:style/:filename' # ADD THIS
}

Если ваше имя сегмента совместимо с DNS, вы можете создать URL .s3.amazonaws.com / object ....

но если он не совместим с DNS, то вы не можете создать, как вы хотите.

Спасибо

 huoxito21 июн. 2012 г., 05:40
На самом деле я могу видеть загруженное изображение, если я напрямую получаю доступ к URL с помощью bucket.s3.amazonaws.com/the-path-to-image. Я просто не могу заставить скрепку генерировать URL таким образом.

Ваш ответ на вопрос