Я создаю веб-клиент IMAP в Rails и хочу кэшировать объект IMAP между запросами.Я планировал сериализовать объект и сохранить его в Redis (поскольку он кэширует только строки), однако ни один из популярных методов сериализации, похоже, не работает.
Marshal и ActiveSupport :: Cache :: MemoryStore оба даютследующая ошибка
Marshal.dump(imap)
TypeError: no marshal_dump is defined for class Mutex
Сериализация YAML работает, но десериализация не удалась.
s = YAML::dump(imap) # works, i.e. loads up a string with the imap data
imap2 = YAML::load(s)
TypeError: allocator undefined for Thread
Существует ли какой-либо другой альтернативный механизм кэширования, который работает для произвольных объектов ruby, особенно те, которые могут использовать потоки внутри?Поддерживает ли такое кэширование альтернативное хранилище значений ключей (я использовал Redis)?Более того, есть ли в Rails возможность запомнить определенных объектов, а не десериализовать их?
PS> Я использую Ruby 1.9.2 с Rails 3.0.3 на Macbook, еслиэто помогает в любом случае.