β€”

title: Shrine 1.0.0

Backwards compatibility

New plugins

class MyUploader < Shrine
  plugin :rack_file
end

class User
  include MyUploader::Attachment.new(:resume)
end

rack_file # a Rack file received with the request
# {
#   :tempfile => #<File:/var/folders/3n/3asd/-Tmp-/RackMultipart201-1476-nfw2-0>,
#   :filename => "resume.pdf",
#   :type => "application/pdf",
# }

user = User.new
user.resume = rack_file

user.resume.original_filename #=> "resume.pdf"
user.resume.mime_type         #=> "application/pdf"
class MyUploader < Shrine
  plugin :module_include

  file_methods do
    def base64
      Base64.encode64(read)
    end
  end
end

uploaded_file = MyUploader.new(:storage).upload(some_file)
uploaded_file.base64 #=> "sd93K4230sDfsk0POd9..."

New features

plugin :direct_upload, presign: ->(request) do # yields a Roda request object
  {content_length_range: 0..(5*1024*1024)} # limit filesize to 5 MB
end

Other improvements