2010-08-31 3 views
0

J'utilise memcache pour la mise en cache dans mon application rails et actuellement j'ai un dev et un environnement de production.rails memcache dev vs production

Je voudrais exécuter l'environnement de développement sans mise en cache afin que je puisse déboguer plus facilement mais je veux activer la mise en cache en production évidemment. J'utilise github et capistrano pour le déploiement.

Sans vérifier toutes les instructions dans lesquelles je peux potentiellement creuser dans le cache, y a-t-il un moyen de gérer cela de manière plus gracieuse ou globale?

si env == 'dev' @post = Post.all autre // obtenir @post du cache fin

Répondre

0

Vous voudrez peut-être envisager d'ajouter un "flush_all" quelque part dans votre déploiement de Capistrano scénario. Cela devrait aider à supprimer le "vieux" contenu de cache pour vos poussées de développement capistrano.

Vous pouvez également envisager de surcharger/aliaser les fonctions CACHE get/set et de remplacer simplement le code dans lequel vous effectuez la mise en cache. Je n'ai pas vu une bonne mise en œuvre de cela.

Vous pouvez également surcharger le Rails.logger et ajouter dans l'affichage du code memcache où vous le souhaitez

Rails.logger.memcache_display = true 
.. 
.. 
Rails.logger.memcache_display = false 

Cela ne répond pas à votre question, mais cela peut aider à rendre plus facile debug.

+0

Pourriez-vous, s'il vous plaît, expliquer à propos de l'option Rails.logger.memcache_display? Où dois-je mettre ce code? On dirait exactement ce dont j'ai besoin. J'ai essayé cela dans les fichiers de configuration et la console. Toujours obtenir la méthode _undefined 'memcache_display = 'pour nil: NilClass (NoMethodError) _. – jibiel

+0

Argh ... J'ai répondu à ça il y a un an, et je ne m'en souviens plus. Je pense que lorsque vous activiez la mise en cache, Rails 2.3.5 s'affichait également lorsque memcache était accédé. Je pense que memcache_display l'a allumé et éteint ... – Daniel

Questions connexes