Возможно ли, что Ruby Marshallng может работать по-разному с разными версиями ruby? - PullRequest
0 голосов
/ 07 января 2020

Мне нужно отправить сложный объект (https://github.com/nepalez/ebay_api - объект EbayAPI может иметь большой объем данных) в sidekiq. Итак, маршалинг выглядит как хорошее решение. Чего я боюсь: возможно ли, что Ruby Marshaling может работать по-разному с разными версиями ruby?

Итак, однажды я обновлю ruby версию, и из-за загрузки маршалированного объекта оригинал Объект был бы не таким, как прежде маршалед, разве это возможно?

Ответы [ 2 ]

2 голосов
/ 07 января 2020

"Тем не менее, обратите внимание, что двоичный формат, используемый Marshal.dump и Marshal.load, зависит от версии, и более новые версии Ruby не гарантируют возможность чтения маршаллированных объектов, написанных в более старых версиях Ruby «. (Ruby Язык программирования, Дэвид Фланаган и Юкухиро Мацумото, стр. 83).

0 голосов
/ 07 января 2020

Недавно у меня возникла проблема с кешем Rails при переходе с Rails 3.2 на Rails 4. Приложение не смогло прочитать модели AR из кеша (в то же время более простые объекты, такие как хеши, массив работали хорошо). Но ruby был таким же.

Поэтому, пожалуйста, обратите внимание, что могут возникнуть некоторые проблемы, поэтому лучше попробовать.

Я предлагаю сохранить маршалированный объект в файл с одной версией ruby и читай с другим.

...