Expire_page ne fonctionne pas sur mon serveur en production

Bonjour tout le monde,

Je développe un projet (http://snippetbucket.com) et j’ai un problème
avec le page caching. Tout fonctionne très bien sur ma machine, mon
sweeper supprime bien le cache et si je fais un expire_page,
çasupprime le cache sans soucis (je suis sous Mac OS X). Mais je viens
de mettre mon application en production sur mon serveur (Debian) et
expire_page ne fonctionne pas. J’ai recours à un truc que je trouve un
peu barbare :

def after_destroy(post)
self.class::sweep
end

def self.sweep(record)
cache_dir = ActionController::Base.page_cache_directory
unless cache_dir == RAILS_ROOT+“/public”
FileUtils.rm_r(Dir.glob(cache_dir+“/*”)) rescue Errno::ENOENT
end
end

Vu que cette méthode (que j’ai trouvé ici :
http://railsenvy.com/2007/2/28/rails-caching-tutorial)
supprime bien le cache, j’ai écarté les problèmes de droits, mais je
ne vois pas d’où ça peut venir, si quelqu’un avait un début de
réponse, des hypothèses que je pourrais tester ou autres, j’aimerais
bien le savoir.

Merci.

PS : Mon page_cache_directory = RAILS_ROOT + “/public/cache”

plutôt que de nous montrer le code qui marche, balance plutôt le code
qui ne marche pas donc le ‘expire_page’, les messages du log et du
debugger au moment ou expire_page est exécuté et même un ls -lR dans
ton /public/cache :slight_smile:

J’ai trouvé, en fait c’était bien mon expire_page qui foirait, il
m’ajoutait
le préfixe /admin à mon contrôleur sans que je lui demande, donc j’ai
ajouté
un / et c’est bon maintenant.
La prochaine fois j’attendrais d’avoir passé une bonne nuit de sommeil
avant
de poster une question qui a sa réponse dans les logs mais à 2h du mat’
on
ne fait plus trop attention ^^


Nicolas Mérouze
Développeur Ruby On Rails / Associé de Yeasty Mobs
http://boldr.fr / http://yeastymobs.com

Nicolas :

J’ai trouvé, en fait c’était bien mon expire_page qui foirait, il
m’ajoutait le préfixe /admin à mon contrôleur sans que je lui
demande, donc j’ai ajouté un / et c’est bon maintenant.

Et comment expliques-tu que cela marche avec ton appli sur Mac
et non sur Linux ? Le code différait ?

– Jean-François.


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)

En fait le cache même si j’avais tout mis comme il fallait n’avait pas
l’air
de fonctionner sur mon Mac (le code est le même, j’étais en mode
production). Les pages étaient bien mises en cache, mais elles n’avaient
pas
l’air d’être prises en compte (ce qui est très bizarre quand même) et
expire_page ne supprimait pas les pages. Mais je ne vérifiais pas (ni
dans
le dossier, ni dans les logs) puisque je croyais que le cache
fonctionnait
(très naïf de ma part). C’est quand je l’ai mis sur mon serveur qu’il y
a eu
des problèmes mais il était un peu tard et j’avais pas les yeux en face
des
trous.


Nicolas Mérouze
Développeur Ruby On Rails / Associé de Yeasty Mobs
http://boldr.fr / http://yeastymobs.com