class ActiveStorage::Blob

def compute_checksum_in_chunks(io)

def compute_checksum_in_chunks(io)
  raise ArgumentError, "io must be rewindable" unless io.respond_to?(:rewind)
  OpenSSL::Digest::MD5.new.tap do |checksum|
    read_buffer = "".b
    while io.read(5.megabytes, read_buffer)
      checksum << read_buffer
    end
    io.rewind
  end.base64digest
end