ruby on rails - thoughtbot - Paperclip S3-Puede cargar imágenes pero no puede verlas
rails s3 (2)
He creado una aplicación Rails que se ejecuta en Heroku, con Paperclip y S3. Logré subir imágenes a mi cubo S3 a través del sitio (puedo verlas aparecer en mi cubo en el panel de control de Amazon).
Pero cuando agrego una etiqueta de imagen, es decir, <% = image_tag x.photo.url%>, obtengo el siguiente html (etiquetas omitidas aquí), ¡sin imagen mostrada!
img alt = "Test_tree" src = "http://s3.amazonaws.com/hiphotos/ads/photos/000/000/015/original/test_tree.jpg?1344661020"
¡Por favor ayuda! ¿Por qué no puedo ver las imágenes aunque estén en el cubo?
Muchas gracias chicos
Cree un archivo con un inicializador de clip llamado:
# config/initializers/paperclip.rb
# We are actually setting this to ''s3_domain_url'',
# so it''s not a placeholder for something else.
Paperclip::Attachment.default_options[:url] = '':s3_domain_url''
Paperclip::Attachment.default_options[:path] = ''/:class/:attachment/:id_partition/:style/:filename''
O también puedes colocar esto dentro de production.rb
:
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV[''S3_BUCKET_NAME''],
:access_key_id => ENV[''AWS_ACCESS_KEY_ID''],
:secret_access_key => ENV[''AWS_SECRET_ACCESS_KEY'']
},
:url =>'':s3_domain_url'',
:path => ''/:class/:attachment/:id_partition/:style/:filename'',
}
En primer lugar, la url que está intentando usar allí en su código es la siguiente:
http://s3.amazonaws.com/hiphotos/ads/photos/000/000/015/original/test_tree.jpg
Cuando visita ese enlace en el navegador, ve lo siguiente:
<message>
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
</Message>
<RequestId>810A6AE1D141304C</RequestId>
<Bucket>hiphotos</Bucket>
<HostId>
XXZ+s+slgZLsRWy5NiU/G0yAKBLftw0oT2dDKpas532qXJEPSrISVPqfZsEgpb2J
</HostId>
<Endpoint>hiphotos.s3.amazonaws.com</Endpoint>
Entonces, si modificamos la url usando el punto final correcto obtenemos esto:
http://hiphotos.s3.amazonaws.com/ads/photos/000/000/015/original/test_tree.jpg
Lo que sí devuelve la imagen correcta.
Si está utilizando cubos europeos, esto puede suceder, y podría ser culpa de la gema que está utilizando para empujar las cosas a s3.
Hay un montón de artículos sobre cómo hacer que Paperclip, S3 y los cubos europeos jueguen bien juntos.
Sin embargo, he descubierto que desde que comencé a usar la gema asset_sync , que utiliza la gema Fog en lugar de la gema aws-s3, no tengo más problemas con el clip y el S3.
Entonces sospecho que Fog tiene algo que ver con hacer que este problema desaparezca para mí. Recomiendo cambiar a él, si estás usando otra cosa.