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.

Другие вопросы по тегам