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| while chunk = io.read(5.megabytes) checksum << chunk end io.rewind end.base64digest end