2012-06-19 2 views
15

Paperclip док о параметрах URL:Настройка имени домена помещается в стиле ведра (bucket.s3.amazonaws.com) с Rails и Скрепка

Вы можете выбрать имя домена помещается в стиле ведра (ведро .s3.amazonaws.com) или стиль пути (s3.amazonaws.com/bucket).

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

+0

Я также попал в эту проблему - было бы интересно узнать, разрешили ли вы это! – michaelrshannon

ответ

1

Если ведро имя является DNS совместимы, то вы можете создать URL-адрес .s3.amazonaws.com/объект ....

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

Благодаря

+0

Фактически я могу видеть загруженное изображение, если я напрямую обращаюсь к url ​​с помощью bucket.s3.amazonaws.com/the-path-to-image. Я просто не могу сделать paperclip генерировать URL-адреса таким образом. – huoxito

14

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

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

Или так:

Paperclip::Attachment.default_options.merge!(
    :url => ':s3_domain_url' 
) 
+1

Я пробовал это. Но он возвращает эту ошибку. Paperclip :: Errors :: InfiniteInterpolationError. Документы также заставляют меня думать, что это будет решение http://rubydoc.info/gems/paperclip/Paperclip/Storage/S3. Но это не работает. – huoxito

+24

Вы также должны определить опцию ': path' с': url', поскольку по умолчанию используется '': url'', что вызывает исключение 'Paperclip :: Errors :: InfiniteInterpolationError'. Ошибка Paperclip автоматически фиксирует опцию ': path' для хранения S3 ... если вы не используете: s3 _ * _ url в интерполяции': url' (да, это ошибка). Используйте это, например: '/ /: class /: attachment /: id_partition /: style /: filename '" '. –

+2

@JulienPortalier есть ошибочная одиночная кавычка в конце вашего примера, который отбросил меня на пару часов. Правильная настройка: ': path =>" /: class /: attachment /: id_partition /: style /: filename "' –

4

Добавить :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 
}