Ho un'applicazione che funziona già (in staging e prod) con S3.
Ora vogliamo che funzioni con il cloudfront.Rails 4 - uso cloudfront con Paperclip
ho capito che da qualche ragione ho definizioni graffetta in due luoghi:
/confog/initializers/paperclip.rb:
if Rails.env.production? || Rails.env.staging? || true
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
end
/config/environments/staging.rb e /config/environments/production.rb
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => s3_options[:bucket],
:access_key_id => s3_options[:access_key_id],
:secret_access_key => s3_options[:secret_access_key]
}
}
(I caricare s3_options
da s3.yml lima che ho)
Prima domanda - è necessario (o al contrario - è sbagliato) per avere questi due posti con configurazione?
Con questa configurazione ottengo questo:
> Profile.last.image.url
=> "https://mybucket.s3.amazonaws.com/profiles/images/000/000/001/original/someimage.jpg?1439912576"
Il mio obiettivo: ottenere l'URL cloundfront invece di S3.
Ho provato diverse cose:
Aggiungere a paperclip.rb questa linea:
Paperclip::Attachment.default_options[:s3_host_alias] = "xxxxx.cloudfront.net"
(dove
xxxxx
stand per l'hash CloudFront).
Risultato: non è cambiato nulla.Aggiungi al paperclip.rb questa linea:
Paperclip::Attachment.default_options[:s3_host_name] = "xxxxx.cloudfront.net"
(dove
xxxxx
stand per l'hash CloudFront).
Risultato: graffetta concatenare il nome secchio prima esso:> Profile.last.image.url => "https://mybucket.xxxxx.cloudfront.net/profiles/images/000/000/001/original/someimage.jpg?1439912576"
configurazione Disattiva in paperclip.rb e aggiungere queste righe al file di configurazione dell'ambiente (ho provato su sviluppo.RB):
config.paperclip_defaults = { : :s3_credentials => { : : :url => "xxxxx.cloudfront.net", :s3_host_name => "xxxxx.cloudfront.net", :path => '/:class/:attachment/:id_partition/:style/:filename', } }
Risultato: graffetta concatenare il nome secchio dopo esso:
> Profile.last.image.url => "https://xxxxx.cloudfront.net/mybucket/profiles/images/000/000/001/original/someimage.jpg?1439912576"
As (3), ma aggiungere queste righe di un livello più alto:
config.paperclip_defaults = { :storage => :s3, :url => "xxxxx.cloudfront.net", :s3_host_name => "xxxxx.cloudfront.net", :path => '/:class/:attachment/:id_partition/:style/:filename', :s3_credentials => { : : } }
Risultato: Uguale a (3).
In breve, non importa quello che ho messo in :s3_host_name
, graffetta concatenare il nome secchio in qualche luogo.
Qualche idea?
Sei un vero toccasana. La tua configurazione ha funzionato perfettamente per il nostro aggiornamento CloudFront. –
Qual è la differenza tra 'url' e' s3_host_alias'? – Jwan622
Quindi usi 'bucket' più? – Jwan622