2010-11-24 45 views
0

Je déploie mon application Rails 3 sur un serveur Tomcat 6. J'ai utilisé warble pour emballer mon projet dans un fichier war et jusqu'à présent n'ai pas eu de problèmes, jusqu'à maintenant. Je viens d'ajouter un cache_sweeper à mon application. Lorsque j'ai essayé de frapper l'application, j'ai reçu la page d'erreur standard 500.méthode cache_sweeper introuvable

En regardant mes journaux, j'ai vu ceci:

org.jruby.rack.RackInitializationException: undefined method `cache_sweeper' for ApplicationController:Class 

Il ne peut pas trouver la méthode cache_sweeper? Cela ne fait-il pas partie de Rails?

Cela ne se produit pas en mode développement, mais en cours de développement j'utilise MRI ruby ​​et j'utilise plutôt le serveur rails.

Quelqu'un a des idées ?!

erreur complète:

SEVERE: Application Error 
org.jruby.rack.RackInitializationException: undefined method `cache_sweeper' for ApplicationController:Class 
    from C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/app/controllers/application_controller.rb:239:in `require' 
    from C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/gems/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require' 
    from C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/gems/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:227:in `load_dependency' 
    from C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/gems/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require' 
    from C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/gems/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:346:in `require_or_load' 
    from C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/gems/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:491:in `load_missing_constant' 
    from C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/gems/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:183:in `const_missing' 
    from C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/gems/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:181:in `each' 
    ... 39 levels... 
    from file:/C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46:in `initialize' 
    from <script>:2:in `new' 
    from <script>:2 

    at org.jruby.rack.DefaultRackApplicationFactory$4.init(DefaultRackApplicationFactory.java:184) 
    at org.jruby.rack.DefaultRackApplicationFactory.getApplication(DefaultRackApplicationFactory.java:59) 
    at org.jruby.rack.PoolingRackApplicationFactory.getApplication(PoolingRackApplicationFactory.java:94) 
    at org.jruby.rack.servlet.DefaultServletDispatcher.process(DefaultServletDispatcher.java:36) 
    at org.jruby.rack.RackFilter.doFilter(RackFilter.java:59) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579) 
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584) 
    at java.lang.Thread.run(Thread.java:619) 

Répondre

0

Pour une raison quelconque, vous devez inclure le module lors de l'utilisation JRuby/ramage. Cependant, cette étape n'est pas nécessaire lors de l'utilisation de l'IRM et du serveur rails.

j'ai ajouté à mon ApplicationController et cela a fonctionné:

class ApplicationController < ActionController::Base 
    include ActionController::Caching::Sweeping if defined?(JRUBY_VERSION) 
    ... 
end