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