Это должно работать (у меня не установлено 1.8.1 для явного тестирования).В соответствии с документацией маршала :
В маршалированных данных хранятся старшие и младшие номера версий вместе с информацией об объекте.При обычном использовании маршалинг может загружать только данные, записанные с тем же основным номером версии и равным или меньшим младшим номером версии.Если флаг Ruby «verbose» установлен (обычно с использованием -d, -v, -w или –verbose), старшие и младшие числа должны точно совпадать.Версионирование маршала не зависит от номеров версий Руби.Вы можете извлечь версию, прочитав первые два байта маршалированных данных.
Начиная с Ruby 1.9.3, marshall.c
определяет основные / вспомогательные версии как:
#define MARSHAL_MAJOR 4
#define MARSHAL_MINOR 8
Глядя на Ruby 1.8.1 marshall.c
показывает те же версии.