2011-10-26 14 views
52

Estoy usando Paperclip para administrar las imágenes cargadas por el usuario en un sitio que se sirve completamente en HTTPS. Para evitar las tontas advertencias de seguridad en IE7/IE8, también debo publicar estas imágenes a través de SSL. normalmente me hacen mis imágenes usando algo como lo siguiente:¿Es posible configurar Paperclip para que produzca urls HTTPS?

<%= image_tag @product.image.url(:large) %> 

donde

class Product < ActiveRecord::Base 

    has_attached_file :image, 
        :styles => { 
         :large => {:geometry => "616x450#"} 
        }, 
        :storage => :s3, 
        :s3_credentials => {:access_key_id => "xxx", :secret_access_key => "xxx"}, 
        :path => ":attachment/:id/:style/:basename.:extension", 
        :bucket => CONFIG['s3_media_bucket'], 
        :default_url => "/assets/image_missing.png" 

y la URL de la imagen producida es algo así como:

http://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG 

¿Existe una opción Paperclip mágica para cambiar esto a:

https://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG 

Respuesta

93

Usted sólo tendrá que añadir:

:s3_protocol => :https 

Esto se cubre in the documentation.

Hay algunas opciones S3-específicos para has_attached_file:
...

  • s3_protocol: El protocolo para las URL generadas a sus activos S3. Puede ser 'http' o 'https'. El valor predeterminado es 'http' cuando sus: s3_permissions son: public_read (el valor predeterminado) y 'https' cuando su: s3_permissions es cualquier otra cosa.
+2

@JoshPinter si me he cargado imágenes a través de un clip ya y quiero añadir los https para la url, cómo le diría a paperclip eso? ¿Existe alguna opción en la que no tenga que volver a subir todas mis imágenes? – Moosa

+1

@Moosa No debería tener que volver a cargarlos si solo está cambiando el protocolo para usar 'https'. Simplemente debería funcionar. Inténtalo y me cuentas. –

+1

@JoshPinter Lo probé pero no funciona, ¿no se llama al código has_attached solo durante las cargas? si es así, ¿cómo funciona en las imágenes existentes ?. Sin embargo, incluso las nuevas subidas no apuntan a https. En S3, la url de la imagen se muestra como https, pero mi sitio lo muestra como http. No estoy seguro por qué. www.outfitadditions.com. – Moosa

22

actualizar el código acaba de decir, añadir el: s3_protocol de la siguiente manera:

class Product < ActiveRecord::Base 
has_attached_file :image, 
       :styles => { 
        :large => {:geometry => "616x450#"} 
       }, 
       :storage => :s3, 
       :s3_credentials => {:access_key_id => "xxx", :secret_access_key => "xxx"}, 
       :s3_protocol => :https, 
       :path => ":attachment/:id/:style/:basename.:extension", 
       :bucket => CONFIG['s3_media_bucket'], 
       :default_url => "/assets/image_missing.png" 
Cuestiones relacionadas