Module: Shrine::Plugins::StoreDimensions

Defined in:
lib/shrine/plugins/store_dimensions.rb

Overview

Documentation lives in [doc/plugins/store_dimensions.md] on GitHub.

[doc/plugins/store_dimensions.md]: github.com/shrinerb/shrine/blob/master/doc/plugins/store_dimensions.md

Defined Under Namespace

Modules: ClassMethods, FileMethods, InstanceMethods Classes: DimensionsAnalyzer

Constant Summary collapse

LOG_SUBSCRIBER =
-> (event) do
  Shrine.logger.info "Image Dimensions (#{event.duration}ms) – #{{
    io:       event[:io].class,
    uploader: event[:uploader],
  }.inspect}"
end

Class Method Summary collapse

Class Method Details

.configure(uploader, opts = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/shrine/plugins/store_dimensions.rb', line 16

def self.configure(uploader, opts = {})
  uploader.opts[:store_dimensions] ||= { analyzer: :fastimage, on_error: :warn, log_subscriber: LOG_SUBSCRIBER }
  uploader.opts[:store_dimensions].merge!(opts)

  # resolve error strategy
  case uploader.opts[:store_dimensions][:on_error]
  when :fail
    uploader.opts[:store_dimensions][:on_error] = -> (error) { fail error }
  when :warn
    uploader.opts[:store_dimensions][:on_error] = -> (error) { Shrine.warn "Error occurred when attempting to extract image dimensions: #{error.inspect}" }
  when :ignore
    uploader.opts[:store_dimensions][:on_error] = -> (error) { }
  end

  # instrumentation plugin integration
  if uploader.respond_to?(:subscribe)
    uploader.subscribe(:image_dimensions, &uploader.opts[:store_dimensions][:log_subscriber])
  end
end