2012-06-19 6 views
15

Paperclip doc su opzioni URL:Impostazione nome di dominio collocato in stile di secchio (bucket.s3.amazonaws.com) con Rails e graffetta

Si può scegliere di avere il nome di dominio collocato in stile del secchio (secchio .s3.amazonaws.com) o in stile percorso (s3.amazonaws.com/bucket).

Come apparirebbe come la messa a punto di avere in realtà messo nome di dominio in stile di secchio? Non posso forzare paperclip a generare URL come bucket.s3.amazonaws.com invece di s3.amazonaws.com/bucket.

+0

Ho anche riscontrato questo problema: sarei interessato a sapere se lo hai risolto! – michaelrshannon

risposta

1

Se secchio nome è DNS compatibile quindi è possibile creare URL .s3.amazonaws.com/oggetto ....

, ma se non è compatibile con DNS allora non si può creare come si desidera.

Grazie

+0

In realtà, posso vedere l'immagine caricata se accedo direttamente all'url con bucket.s3.amazonaws.com/the-path-to-image. Non riesco proprio a generare graffette in questo modo. – huoxito

14

appena impostato in questo modo:

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

O come questa:

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

L'ho provato. Ma restituisce questo errore Paperclip :: Errors :: InfiniteInterpolationError Anche i documenti mi fanno pensare che sarebbe la soluzione http://rubydoc.info/gems/paperclip/Paperclip/Storage/S3. Ma non sta funzionando. – huoxito

+24

Devi anche definire l'opzione ': path' con': url', perché quella di default include '": url "' che causa l'eccezione 'Paperclip :: Errors :: InfiniteInterpolationError'. Il bug di Paperclip corregge automaticamente l'opzione ': path' per l'archiviazione S3 ... a meno che non si usi un: s3 _ * _ url nell'interpolazione di': url' (si, questo è un bug). Ad esempio: '" /: class /: attachment /: id_partition /: style /: filename '"'. –

+2

@JulienPortalier c'è un errato preventivo singolo alla fine del tuo esempio che mi ha buttato fuori per un paio d'ore. L'impostazione corretta è: ': percorso =>" /: class /: attachment /: id_partition /: style /: nomefile "' –

4

Aggiungi :url e :path alle Paperclip opzioni predefinite nel vostro application.rb o 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 
}