неопределенный метод cache_sweeper для ActionController :: Base: Class - warbler - PullRequest
2 голосов
/ 11 февраля 2011

Я развертываю свое приложение Jruby Rails на glassfish с acts_as_audited в качестве установленного гема / плагина.

Всякий раз, когда я пытаюсь провести аудит моей модели, я получаю следующую ошибку.

Моя среда: Jruby 1.6.0.RC2, Rails 3.0.3

Вы можете обратиться сюда, если хотите узнать больше об ошибке 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...

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Я сообщил об этой проблеме как ошибка в jruby-rack.

Обходной путь - добавить require 'active_record' if defined? $servlet_context после require 'rubygems' в config / boot.rb или вручную, включая поиск в другом месте в application.rb ActionController::Base.send(:include, ActionController::Caching::Sweeping) if defined? $servlet_context.

1 голос
/ 14 февраля 2011

Мне кажется, я понимаю эту проблему. Похоже, act_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

Я не уверен, почему это происходит, но, вероятно, это проблема загрузки / разрешения, связанная с работой в поточно-безопасном режиме для производства.

...