Мой текущий обходной путь, чтобы включить perform_caching
затем перезагрузить контроллер:
class ProjectsCachingTest < ActionController::IntegrationTest
def setup
# force the controller to be reloaded when caching is enabled
ActionController::Base.perform_caching = true
load "projects_controller.rb"
end
def teardown
# undo the actions above
ActionController::Base.perform_caching = false
load "projects_controller.rb"
end
end
В последней версии Rails 2 проблема, с которой вы столкнулись, связана с методами класса caches_action
и caches_page
. Оба они создают вокруг фильтра, чтобы выполнить кеширование, но только когда включено perform_caching
.
Таким образом, изменение perform_caching
во время выполнения не воссоздает ожидаемые вокруг фильтров. Приведенный выше пример является одним из способов принудительного переопределения вашего контроллера.
Я пытаюсь это сделать в Rails 3.1.8, и он, похоже, не работает. Страница обновляется по каждому запросу. –