2010-11-26 27 views
0

J'ai donc ces deux lignes:Rails, TypeError: ne peut pas modifier l'objet congelé, uniquement en mode développement

@unTaggedPhotos = Photo.cached_unTagged.sort_by{rand}[0..7] 

qui appelle:

Rails.cache.fetch('unTagged', :expires_in => 20.minutes) {Photo.where("hide = 0").limit(300)} 

Et la première fois que je charge une page après avoir effacé le cache, ça marche, mais ensuite j'obtiens l'erreur d'objet figé. La chose étrange est que cela ne semble pas être un problème sur la version en direct de mon site exécutant le même code. (J'ai d'autres choses en cache qui fonctionnent aussi sur la version locale)

+0

Où l'exception est-elle levée? –

+0

A la première ligne de code que j'ai cité. – dpieri

+0

Veuillez publier vos fichiers 'config/development.rb' et' config/production.rb' et tous les autres fichiers dans lesquels vous configurez les paramètres de votre cache. – bowsersenior

Répondre

0

Je ne suis pas sûr que ce soit la meilleure façon de gérer le problème, mais quand je le casse en deux étapes et appelle la méthode dup de ruby ​​lorsque je fais référence au données en cache, il ne se plaint pas d'être gelé plus.

myUTP = Photo.cached_unTagged.dup 
@unTaggedPhotos = myUTP.sort_by{rand}[0..7]