Я не уверен, почему вы думаете, что он сравнивает имя файла?
require "digest"
Digest::MD5.hexdigest(File.read('file1'))
=> "60b725f10c9c85c70d97880dfe8191b3"
Digest::MD5.hexdigest(File.read('file2'))
=> "60b725f10c9c85c70d97880dfe8191b3"
Что вы делали, чтобы получить разные контрольные суммы?