Animated gifs with vips and active storage

For reasons I don't understand, this spell of black magic is required to get gifs to play nicely with active storage when using vips.
lang-ruby
<figure class="attachment attachment--<%= blob.representable? ? "preview" : "file" %> attachment--<%= blob.filename.extension %>">
  <% if blob.representable? %>
    <%= image_tag blob.representation(
          loader: { n: -1 },
          resize_to_limit:
          local_assigns[:in_gallery] ? [800, 600] : [1024, 768])
    %>
  <% end %>

  <figcaption class="attachment__caption">
    <% if caption = blob.try(:caption) %>
      <%= caption %>
    <% else %>
      <span class="attachment__name"><%= blob.filename %></span>
      <span class="attachment__size"><%= number_to_human_size blob.byte_size %></span>
    <% end %>
  </figcaption>
</figure>
While looking into this, I had to ask Twitter (who calls it X anyway?) and got a helpful pointer in the right direction from @sanyasi  with this reply.

While looking into VIPS, I noticed many additional packages that might be helpful, so I updated my Dockerfile (just in case). I can't vouch for any of these yet, but here is the updated dockerfile:

lang-dockerfile
# Install base packages
RUN apt-get update -qqy && \
    apt-get install --no-install-recommends -y wget gpg && \
    wget -q -O- https://packagecloud.io/dcommander/libjpeg-turbo/gpgkey | \
    gpg --dearmor >/etc/apt/trusted.gpg.d/libjpeg-turbo.gpg && \
    echo "deb [signed-by=/etc/apt/trusted.gpg.d/libjpeg-turbo.gpg] https://packagecloud.io/dcommander/libjpeg-turbo/any/ any main" \
    > /etc/apt/sources.list.d/libjpeg-turbo.list && \
    apt-get update -qqy && \
    apt-get install --no-install-recommends -y \
      curl \
      ffmpeg \
      libcfitsio10 \
      libcgif0 \
      libexif12 \
      libexpat1 \
      libfftw3-dev \
      libglib2.0-0 \
      libgsf-1-114 \
      libimagequant0 \
      libjemalloc2 \
      libjpeg-turbo-official \
      liblcms2-2 \
      libmatio11 \
      libopenexr-3-1-30 \
      libopenjp2-7 \
      libopenslide0 \
      liborc-0.4-0 \
      libpango-1.0-0 \
      libpangocairo-1.0-0 \
      libpng16-16 \
      libpoppler-glib8 \
      librsvg2-2 \
      libtiff6 \
      libvips \
      libwebp7 \
      postgresql-client \
      zlib1g && \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives && \
    mkdir -p /rails/tmp /rails/log /rails/db /rails/storage

Comments

No comments yet. Be the first to comment!
Your email address will be verified before your first comment is posted. It will not be displayed publicly.
Legal Information
By commenting, you agree to our Privacy Policy and Terms of Service.