Ruby Marshal :: Загрузить файл 1.8.1 из 1.9.3 - PullRequest
1 голос
/ 04 января 2012

Возможно ли Marshal::load файл, который был выгружен с ruby ​​версии 1.8.1 из ruby ​​1.9.3?

1 Ответ

2 голосов
/ 04 января 2012

Это должно работать (у меня не установлено 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 показывает те же версии.

...