Ich erstelle einen Web-basierten IMAP-Client in Rails und möchte das IMAP-Objekt zwischen Anfragen zwischenspeichern. Ich plante, das Objekt zu serialisieren und es in Redis zu speichern (da es nur Strings zwischenspeichert), jedoch scheint keine der gängigen Serialisierungsmethoden zu funktionieren.Wie cache/serialisieren Sie ein Net :: IMAP-Objekt in Ruby/Rails?
Marshal und Active :: Cache :: Memorys beide geben dem folgenden Fehler
Marshal.dump(imap)
TypeError: no marshal_dump is defined for class Mutex
YAML Serialisierung funktioniert, aber Deserialisieren ausfällt.
s = YAML::dump(imap) # works, i.e. loads up a string with the imap data
imap2 = YAML::load(s)
TypeError: allocator undefined for Thread
Gibt es einen anderen alternativen Caching-Mechanismus, der für beliebige Ruby-Objekten arbeitet, vor allem diejenigen, die Fäden intern verwenden könnten? Unterstützt ein alternativer Schlüssel/Wert-Speicher (ich habe Redis verwendet) ein solches Caching? Noch besser, gibt es überhaupt für Rails zu erinnern, bestimmte Objekte, anstatt mich deserialisieren sie?
PS> Ich benutze Ruby 1.9.2 mit Rails 3.0.3 auf einem Macbook, wenn das in irgendeiner Weise hilft.
Serialisierung der Daten ist, was ich gerade mache (zunächst versuchte ich, die Daten und die Verbindung zwischenzuspeichern). Was meinen Sie mit einer globalen IMAP-Verbindung? Wie machst du das? Variablen auf Klassenebene? –