Sha256: 3d18ad528f8a2bcc0bdaa726f1590d48f2ff9676e7a00dcc13cfcbd2ad57ed27

Contents?: true

Size: 1.75 KB

Versions: 47

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

module Alchemy
  # The persisted version of a rendered picture variant
  #
  # You can configure the generator class to implement a
  # different thumbnail store (ie. a remote file storage).
  #
  #     config/initializers/alchemy.rb
  #     Alchemy::PictureThumb.storage_class = My::ThumbnailStore
  #
  class PictureThumb < BaseRecord
    belongs_to :picture, class_name: "Alchemy::Picture"

    validates :signature, presence: true
    validates :uid, presence: true

    class << self
      # Thumbnail storage class
      #
      # @see Alchemy::PictureThumb::FileStore
      def storage_class
        @_storage_class ||= Alchemy::PictureThumb::FileStore
      end

      # Set a thumbnail storage class
      #
      # @see Alchemy::PictureThumb::FileStore
      def storage_class=(klass)
        @_storage_class = klass
      end

      # Upfront generation of picture thumbnails
      #
      # Called after a Alchemy::Picture has been created (after an image has been uploaded)
      #
      # Generates three types of thumbnails that are used by Alchemys picture archive and
      # persists them in the configures file store (Default Dragonfly::FileDataStore).
      #
      # @see Picture::THUMBNAIL_SIZES
      def generate_thumbs!(picture)
        Alchemy::Picture::THUMBNAIL_SIZES.values.each do |size|
          variant = Alchemy::PictureVariant.new(picture, {
            size: size,
            flatten: true
          })
          signature = Alchemy::PictureThumb::Signature.call(variant)
          thumb = find_by(signature: signature)
          next if thumb

          uid = Alchemy::PictureThumb::Uid.call(signature, variant)
          Alchemy::PictureThumb::Create.call(variant, signature, uid)
        end
      end
    end
  end
end

Version data entries

47 entries across 47 versions & 1 rubygems

Version Path
alchemy_cms-7.3.4 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.3.3 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.3.2 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.2.7 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.3.1 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.3.0 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.2.6 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.2.5 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.1.12 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.0.15 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.2.4 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.1.11 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.2.3 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.1.10 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.2.2 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.1.9 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.0.14 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.2.1 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.0.13 app/models/alchemy/picture_thumb.rb
alchemy_cms-7.1.8 app/models/alchemy/picture_thumb.rb