title: Shrine 1.4.0

New features

class ImageUploader < Shrine
  plugin :versions, fallbacks: {:thumb_2x => :thumb, :large_2x => :large}
end
# ... (background job is working)

user.avatar_url(:thumb_2x) # returns :thumb URL until :thumb_2x becomes available
user.avatar_url(:large_2x) # returns :large URL until :large_2x becomes available
class Record < Sequel::Model
  def after_commit
    if something_happened?
      data = Shrine::Attacher.dump(image_attacher)
      SomethingJob.perform_async(data)
    end
  end
end
class SomethingJob
  include Sidekiq::Worker
  def perform(data)
    attacher = Shrine::Attacher.load(data)
    # ...
  end
end
plugin :direct_upload, presign: true, presign_location: ->(r) { "${filename}" }
require "mime/types"

plugin :data_uri, filename: ->(content_type) do
  extension = MIME::Types[content_type].first.preferred_extension
  "data_uri.#{extension}"
end

Other improvements

Bug fixes

Backwards compatibility