首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionController::Base:Class -`cache_sweeper的未定义方法

ActionController::Base:Class -`cache_sweeper的未定义方法
EN

Stack Overflow用户
提问于 2011-02-12 00:17:43
回答 2查看 915关注 0票数 2

我正在glassfish上部署我的Jruby Rails应用程序,并安装了acts_as_audited作为gem/plugin。

每当我尝试审计我的模型时,我都会得到以下错误。

我的环境是: Jruby 1.6.0.RC2,Rails 3.0.3

如果你们想了解更多关于error http://www.ruby-forum.com/topic/1053934的信息,可以参考这里

请帮帮我,我被困在这里了

代码语言:javascript
复制
Application Error
org.jruby.rack.RackInitializationException: undefined method `cache_sweeper' for ActionController::Base:Class
    from /home/dev2/glassfishv3/glassfish/domains/domain1/applications/gavel/WEB-INF/gems/gems/acts_as_audited-2.0.0.rc6/lib/acts_as_audited.rb:44:in `class_eval'
    from /home/dev2/glassfishv3/glassfish/domains/domain1/applications/gavel/WEB-INF/gems/gems/acts_as_audited-2.0.0.rc6/lib/acts_as_audited.rb:44
    from /home/dev2/glassfishv3/glassfish/domains/domain1/applications/gavel/WEB-INF/gems/gems/acts_as_audited-2.0.0.rc6/lib/acts_as_audited.rb:68:in `require'
    from /home/dev2/glassfishv3/glassfish/domains/domain1/applications/gavel/WEB-INF/gems/gems/bundler-1.0.10/lib/bundler/runtime.rb:68:in `require'
    from /home/dev2/glassfishv3/glassfish/domains/domain1/applications/gavel/WEB-INF/gems/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `each'
    from /home/dev2/glassfishv3/glassfish/domains/domain1/applications/gavel/WEB-INF/gems/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `require'
    from /home/dev2/glassfishv3/glassfish/domains/domain1/applications/gavel/WEB-INF/gems/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `each'
    from /home/dev2/glassfishv3/glassfish/domains/domain1/applications/gavel/WEB-INF/gems/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `require'
     ... 20 levels...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-28 22:07:16

我在jruby-rack中将这个问题报告为a bug

一种解决方法是在配置/boot.rb中的require 'rubygems'之后添加require 'active_record' if defined? $servlet_context,或者在application.rb ActionController::Base.send(:include, ActionController::Caching::Sweeping) if defined? $servlet_context中手动包括清理某个地方。

票数 1
EN

Stack Overflow用户

发布于 2011-02-14 19:35:13

我想我认识到了这个问题。看起来acts_as_audited使用了缓存清理器。我在缓存清理器上遇到过这个问题。

您需要在ApplicationController中显式包含缓存模块:

代码语言:javascript
复制
class ApplicationController < ActionController::Base

  # JRuby not finding cache sweeper at runtime in production
  include ActionController::Caching::Sweeping if defined?(JRUBY_VERSION)

  # Rest of your class here...

end

我不确定为什么会发生这种情况,但这可能是一个加载/解析问题,与在用于生产的线程安全模式下运行有关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4971387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档