โ€”

title: Shrine 2.0.0

Backwards compatibility

def upload(io, id, shrine_metadata: {}, **upload_options)
  # ...
end

def move(io, id, shrine_metadata: {}, **upload_options)
  # ...
end

New plugins

New storages

New features

plugin :determine_mime_type, analyzer: ->(io, analyzers) do
  analyzers[:mimemagic].call(io) || analyzers[:file].call(io)
end
plugin :store_dimensions, analyzer: ->(io, analyzers) do
  dimensions = analyzers[:filemagic].call(io)
  dimensions || MiniMagick::Image.new(io).dimensions
end

Other improvements

Shrine.plugin :download_endpoint, storages: [:store], prefix: "/downloads", disposition: "inline"

class DocumentUploader < Shrine
  # all other options above will be persisted
  plugin :download_endpoint, disposition: "attachment"
end