Sha256: d866d379cf82c7c294c0c20119c1d7cc4880c657ecb80a758333f0fab3ee0556
Contents?: true
Size: 1.43 KB
Versions: 11
Compression:
Stored size: 1.43 KB
Contents
# frozen_string_literal: true module Alchemy class Picture < BaseRecord class Url attr_reader :variant, :thumb # @param [Alchemy::PictureVariant] # def initialize(variant) raise ArgumentError, "Variant missing!" if variant.nil? @variant = variant end # The URL to a variant of a picture # # @return [String] # def call(params = {}) return variant.image.url(params) unless processible_image? "/#{uid}" end private def processible_image? variant.image.is_a?(::Dragonfly::Job) end def uid signature = PictureThumb::Signature.call(variant) if find_thumb_by(signature) thumb.uid else uid = PictureThumb::Uid.call(signature, variant) ActiveRecord::Base.connected_to(role: db_writing_role) do PictureThumb::Create.call(variant, signature, uid) end uid end end def find_thumb_by(signature) @thumb = if variant.picture.thumbs.loaded? variant.picture.thumbs.find { |t| t.signature == signature } else variant.picture.thumbs.find_by(signature: signature) end end def db_writing_role if ActiveRecord::Base.respond_to?(:writing_role) ActiveRecord::Base.writing_role else ActiveRecord.writing_role end end end end end
Version data entries
11 entries across 11 versions & 1 rubygems