class ActiveStorage::Transformers::ImageProcessingTransformer

def operations

def operations
  transformations.each_with_object([]) do |(name, argument), list|
    if name.to_s == "combine_options"
      raise ArgumentError, <<~ERROR.squish
        Active Storage's ImageProcessing transformer doesn't support :combine_options,
        as it always generates a single ImageMagick command.
      ERROR
    end
    if argument.present?
      list << [ name, argument ]
    end
  end
end

def process(file, format:)

def process(file, format:)
  processor.
    source(file).
    loader(page: 0).
    convert(format).
    apply(operations).
    call
end

def processor

def processor
  ImageProcessing.const_get(ActiveStorage.variant_processor.to_s.camelize)
end