Проблема была в символах ^ и $!Руби не считает \ r (иначе ^ M) границей линии.Если я изменил свой шаблон, заменив ^ и $ на «\ r», шаблон соответствовал желаемому.
data = file.readlines.join.scan(/\rName: (.*?)\rEmail: (.*?)\r/)
Вместо того, чтобы изменять шаблон, я решил сделать gsub для текста, заменив \ r на \ n перед вызовом сканирования.
data = file.readlines.join.gsub(/\r/, "\n").scan(/^Name: (.*?)\nEmail: (.*?)$/)
Спасибо вам за ваши ответына мой вопрос.