2010-11-17 21 views
3

Je vais avoir un problème en utilisant memcached dans Rails 3problème Memcached avec Rails 3. L'objet est pas désérialisée la deuxième fois

Ce qui suit est dans mon contrôleur

@last_post = Rails.cache.fetch('last') {Post.last}

De la vue que j'appelle @last_post.title

La première fois que la vue est chargée, le titre du dernier message est affiché. Une fois la vue rafraîchie, j'obtiens l'erreur undefined method 'title' for #<String:0x8007ae0>

Il semble que l'objet ne soit pas désérialisé la deuxième fois.

Est-ce que je fais quelque chose de mal? Que puis-je faire pour résoudre ce problème? (Ruby 1.8.7, Rails 3.0.1)

Merci!

Répondre

2

Je pense que ça a à voir avec Marshal.load, fondamentalement les rails chargent magiquement toutes les classes pour vous mais quand vous appelez Rails.cache.fetch à un certain point il appellera Marshal.load qui ne sait rien sur les Rails charge de la dépendance et peut parfois échouer en mode silencieux (classe non définie/module)

Ma solution est d'ajouter simplement

require_dependency 'post' 

à votre contrôleur qui devrait charger la classe pour la bibliothèque maréchal pour voir

1

J'ai trouvé la solution! Assurez-vous que votre magasin est défini dans votre development.rb, que vous ayez ou non activé la mise en cache. Aka ajouter ceci à development.rb

config.cache_store = :dalli_store