对于rails引擎中的控制器,未定义caches_action

时间:2014-01-24 06:14:30

标签: ruby-on-rails ruby-on-rails-4 rails-engines actionpack action-caching

我有一个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

我还在我的gemspec中包含了gem actionpack-action_caching版本1.0.0

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.rbto_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 个答案:

答案 0 :(得分:0)

我刚刚升级到最新的1.1.1版本的actionpack-action_caching,它解决了这个问题。

感谢Andrew White回答我在Github提出的问题。