2012-06-19 23 views
15

Paperclip doc über URL-Optionen:Einrichten Eimer Namen platziert Domain-Stil (bucket.s3.amazonaws.com) mit Rails und Büroklammer

Sie können wählen, den Eimer Namen platziert Domain-Stil haben (Eimer .s3.amazonaws.com) oder Pfadstil (s3.amazonaws.com/bucket).

Wie sieht das Setup aus, um den Namen des Buckets tatsächlich domainähnlich zu setzen? Ich kann Paperclip nicht zwingen, URLs wie bucket.s3.amazonaws.com anstelle von s3.amazonaws.com/bucket zu generieren.

+0

Ich habe auch dieses Problem getroffen - wäre interessiert zu wissen, ob Sie es gelöst haben! – michaelrshannon

Antwort

1

Wenn Sie Namen Eimer ist DNS kompatibel, dann können Sie url .s3.amazonaws.com/object ....

erstellen, aber wenn es nicht DNS-kompatibel, dann können Sie nicht erstellen, wie Sie wollen.

Dank

+0

Eigentlich kann ich das hochgeladene Bild sehen, wenn ich direkt auf die URL wähle mit bucket.s3.amazonaws.com/the-path-to-image Ich kann einfach nicht Papierclips generieren URLs auf diese Weise. – huoxito

14

einfach es wie folgt festgelegt:

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

Oder wie folgt aus:

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

Ich habe das versucht. Aber es gibt diesen Fehler zurück Paperclip :: Errors :: InfiniteInterpolationError Die Dokumente lassen mich auch denken, dass es die Lösung wäre http://rubydoc.info/gems/paperclip/Paperclip/Storage/S3. Aber es funktioniert nicht. – huoxito

+24

Sie müssen auch die Option ': path' mit': url' definieren, da die Standardoption '': url' 'enthält, die die Ausnahme' Paperclip :: Errors :: InfiniteInterpolationError' verursacht. Paperclip Bug korrigiert automatisch die ': path' Option für S3 Speicher ... es sei denn, Sie verwenden eine: s3 _ * _ URL in der Interpolation von': url' (ja das ist ein Fehler). Verwenden Sie dies zum Beispiel: '" /: class /: attachment /: id_partition /: style /: filename '"'. –

+2

@JulienPortalier Am Ende gibt es ein falsches Anführungszeichen, das mich für ein paar Stunden abwarf. Die richtige Einstellung ist: ': path =>" /: class /: Anhang /: id_partition /: style /: Dateiname "' –

4

hinzufügen :url und :path den Paperclip Standardoptionen in Ihrem application.rb oder 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 
}