2010-04-12 6 views
3

J'ai un contrôleur projets dans mon application Rails avec:Rails caches_page: index dans un mauvais emplacement

caches_page :index 

Cependant, au lieu du fichier mis en cache générés à /public/projects/index.html il est situé à /public/projects.html.

Le serveur Web (actuellement Mongrel) recherche les répertoires */ avant les fichiers *.html. La requête http://…/projects est donc routée via Rails et mon fichier cache d'index n'est jamais diffusé.

Comment puis-je dire à caches_page :index de générer le fichier à /public/projects/index.html à la place?

+0

Quelle est votre route racine dans le fichier routes.rb? Il se passe quelque chose d'autre s'il ne nomme pas le fichier cache index.html – naven87

+0

Ma route racine est: 'map.root: controller => 'static',: action => 'home'' Ma route du projet est : 'map.resources: projects' – Andy

Répondre

0

Vous pouvez spécifier le répertoire en ajoutant ce qui suit à votre bloc de configuration environment.rb

config.cache_store = :file_store, "#{RAILS_ROOT}/public/projects" 

Quelques autres:

  1. Les paramètres du cache ont changé certains avec la version différente de Rails, il serait utile de savoir quelle version vous exécutez

  2. En général, vous devriez probablement utiliser la mémoire cache plutôt que le magasin de fichiers (si vous avez suffisamment de RAM dans votre boîte).

+0

J'utilise Rails 2.3.5. Je pourrais essayer le memcaching, mais la mémoire RAM est susceptible d'être serrée, et j'espère qu'Apache servira efficacement mon petit site à faible trafic. Cependant, je n'essaie pas de changer la racine du cache, juste le comportement de mise en cache de l'action d'index. – Andy

Questions connexes