我正在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的信息,可以参考这里
请帮帮我,我被困在这里了
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...发布于 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中手动包括清理某个地方。
发布于 2011-02-14 19:35:13
我想我认识到了这个问题。看起来acts_as_audited使用了缓存清理器。我在缓存清理器上遇到过这个问题。
您需要在ApplicationController中显式包含缓存模块:
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我不确定为什么会发生这种情况,但这可能是一个加载/解析问题,与在用于生产的线程安全模式下运行有关。
https://stackoverflow.com/questions/4971387
复制相似问题