caches_action не определено для контроллера в движке рельсов
У меня в приложении Rails4 установлен двигатель rails 4 MyEngine
с контроллером MyController
Я определил несколько действий в контроллере для кэширования следующим образом:
module MyEngine
require 'actionpack/action_caching'
class MyController < ApplicationController #inherits from application controller of app
[:index, :show].each do |action|
caches_action action
end
end
end
Я также включил драгоценный камень actionpack-action_caching
версия 1.0.0
в моем gemspec
spec.add_dependency "actionpack-action_caching", "1.0.0"
Когда я пытаюсь попасть на любой маршрут, указывающий на MyController
Я получаю следующую ошибку:
ActionController::RoutingError - undefined method `caches_action' for MyEngine::MyController:Class:
Я использую среду разработки, поэтому я также изменил конфигурацию среды, чтобы включить кэширование:
config.action_controller.perform_caching = true
Я пытался изменить кучу вещей, таких как добавление этого блока в engine.rb
в to_prepare
а также initializer
блок.
ActiveSupport.on_load :action_controller do
require 'action_controller/action_caching'
end
Я также пытался установить config.action_caching = true
в engine.rb
,
Я уверен, что упускаю что-то очень простое, просто не могу узнать что!
EDIT1
Пробовал добавлять caches_action
для действий в приложении, а также. Выдает ту же ошибку.
Для отладки я добавил несколько операторов печати внутри gem
На этой линии require 'action_controller/action_caching'
и печатает true
когда сервер запускается.
Это больше сбивает с толку!
1 ответ
Я только что обновил до версии 1.1.1 actionpack-action_caching, и это решило проблему.
Спасибо Эндрю Уайту, который ответил на вопрос, который я поднял на Github.