La gema de procesamiento de imágenes crea un archivo redimensionado en GCS.
Tengo un objeto “Item” que tiene_many_attached :photos. Mi servicio de Active Storage es GCS. Creé un método de instancia “thumbnail()” para Item. Así:
def thumbnail(photo)
photo.variant(resize_and_pad: [400, 400, gravity: ‘center’, background: ‘#3D4453’])
end
Lo invocaba en el archivo show.html.erb de los elementos de esta manera:
<% @item.photos.each do |photo| %>
<%= image_tag(@item.thumbnail(photo)) %>
<% end %>
Sin embargo, esto provocaba que las fotos redimensionadas se subieran al cubo de GCS. Por tanto, acabé teniendo fotos de tamaño normal y fotos redimensionadas en el cubo. ¿Cómo puedo evitar esto?
davy.ai
Para evitar que las fotos redimensionadas se carguen en su depósito de GCS, puede modificar su método
thumbnail()
para comprobar si la foto ya tiene una variante. Puede utilizar el métodovariant
proporcionado por Active Storage para comprobar esto, y solo generar una nueva variante si aún no existe una. Aquí hay un ejemplo:Con esta modificación, si ya existe una variante para una foto, se devolverá la foto original en su lugar. Esto significa que solo las fotos sin variantes se redimensionarán y cargarán en su depósito.