Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1537 connectés 

  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  Problème de mise en cache d'actions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de mise en cache d'actions

n°1754367
esox_ch
Posté le 02-07-2008 à 08:46:04  profilanswer
 

Bonjour,
 
Je veux mettre en place un système de mise en cache sur mon site en Rails. Dans le cas d'actions demandant une verification des droits de l'utilisateur, je veux avoir recours à caches_action afin que les filtres soient executés.
Voilà mon code :
 

Code :
  1. class UsersController < ElementsController
  2.    
  3.     before_filter :login_required
  4.  
  5.      access_control :DEFAULT=>'admin'
  6.      
  7.          
  8.       caches_action :index,
  9.                     :show
  10.    
  11.      cache_sweeper :user_sweeper,
  12.                   :only => [:create,
  13.                              :update,
  14.                              :delete]
  15.    
  16.      # GET /users
  17.      # GET /users.xml
  18.      def index
  19.        super
  20.      end
  21.   ....
  22.    
  23.   end


 
Le problème est que je me mange l'erreur suivant quand j'essaie d'accèder à la page en question :
 

Citation :


NoMethodError (undefined method `[]' for #<Enumerable::Enumerator:0xb7269c08> ):
    /vendor/rails/activerecord/lib/../../activesupport/lib/active_support/core_ext/string/access.rb:53:in `last'
    /vendor/rails/actionpack/lib/action_controller/caching.rb:247:in `normalize!'
    /vendor/rails/actionpack/lib/action_controller/caching.rb:236:in `path'
    /vendor/rails/actionpack/lib/action_controller/caching.rb:195:in `before'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:598:in `proxy_before_and_after_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:470:in `call'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:470:in `call'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:637:in `call_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:638:in `call_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:438:in `call'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:637:in `call_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:638:in `call_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:438:in `call'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:637:in `call_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:638:in `call_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:438:in `call'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:637:in `call_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:638:in `call_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:438:in `call'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:637:in `call_filter'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:619:in `perform_action_without_benchmark'
    /vendor/rails/actionpack/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
    /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
    /vendor/rails/actionpack/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
    /vendor/rails/actionpack/lib/action_controller/rescue.rb:83:in `perform_action'
    /vendor/rails/actionpack/lib/action_controller/base.rb:430:in `send'
    /vendor/rails/actionpack/lib/action_controller/base.rb:430:in `process_without_filters'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:624:in `process_without_session_management_support'
    /vendor/rails/actionpack/lib/action_controller/session_management.rb:114:in `process'
    /vendor/rails/actionpack/lib/action_controller/base.rb:330:in `process'
    /vendor/rails/railties/lib/dispatcher.rb:41:in `dispatch'
    /vendor/rails/railties/lib/fcgi_handler.rb:168:in `process_request'
    /vendor/rails/railties/lib/fcgi_handler.rb:143:in `process_each_request!'
    /vendor/rails/railties/lib/fcgi_handler.rb:109:in `with_signal_handler'
    /vendor/rails/railties/lib/fcgi_handler.rb:142:in `process_each_request!'
    /usr/lib/ruby/1.8/fcgi.rb:612:in `each_cgi'
    /usr/lib/ruby/1.8/fcgi.rb:609:in `each'
    /usr/lib/ruby/1.8/fcgi.rb:609:in `each_cgi'
    /vendor/rails/railties/lib/fcgi_handler.rb:141:in `process_each_request!'
    /vendor/rails/railties/lib/fcgi_handler.rb:55:in `process!'
    /vendor/rails/railties/lib/fcgi_handler.rb:25:in `process!'
    /var/www/rails/esoxCMS/public/dispatch.fcgi:26


 
Le pire c'est qu'avec caches_page ça marche parfaitement ...  
Avez vous une idée?
 
Merci d'avance
 
P.S: Le fait que index ne fasse pas grand chose, c'est juste à des fin de debugging..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 02-07-2008 à 08:46:04  profilanswer
 

n°1759714
igarimasho
Posté le 15-07-2008 à 15:55:49  profilanswer
 

C'est mon tuto préféré dans ce domaine: http://www.railsenvy.com/2007/2/28 [...] g-tutorial
 
Tu es sûr que ton fichier view est bien codé aussi?

n°1759884
esox_ch
Posté le 15-07-2008 à 18:22:48  profilanswer
 

J'ai résolu le problème (merci à toi).
En fait ça venait d'un problème de version entre les gems installées et rails .. J'ai fait un peu le ménage et là ça marche nickel :D

n°1760568
igarimasho
Posté le 16-07-2008 à 21:35:35  profilanswer
 

C'était quoi le problème en fait? Parce que je vois pas du tout en quoi j'ai pu t'être utile. Tu utilisais du deprecated code quelque part?
 
Je trouve que c'est un poil pénible que lors d'une mise à jour des gems, il garde en parallèle l'ancienne version, je suis pas sûr que ce soit bénéfique une telle approche.

n°1760595
esox_ch
Posté le 16-07-2008 à 22:17:16  profilanswer
 

Salut,
Je crois que au début du développement (quand j'apprenais) j'avais (peut-être en faisant un gem freeze) inclus le code de certain gems (ActionController, ...) dans l'arborescence de mon projet.  
Du coup en utilisant certains nouveaux plugin&co (qui ont été faits pour rails 1.2+) ça foutait sa merde.
Donc en supprimant cette partie de l'arborescence (et donc en utilisant les gem installés simplement par gem install, et donc maintenus à jour) tout est rentré dans l'ordre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  Problème de mise en cache d'actions

 

Sujets relatifs
Problème Socket Bluetoothproblème SDCC et CONTEXT
Probleme URL Re-writingProbleme de ressources (rc) sous VC++ (icones++)
probleme redimensionnement image dans un tableauProblème avec Servlet
[résolu]Problème Carateres japonais UTF8 et IE7 phpMise a jour d'un macro a l'ouverture d'une feuille
Problème redirection 301 htaccess[ORACLE] Problème de création de clé étrangère
Plus de sujets relatifs à : Problème de mise en cache d'actions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR