【问题标题】:caches_action undefined for controller in rails engine未为 rails 引擎中的控制器定义 caches_action
【发布时间】:2014-02-15 00:51:18
【问题描述】:

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

我尝试过更改很多内容,例如在 to_prepareinitializer 块中将此块添加到 engine.rb

ActiveSupport.on_load :action_controller do
    require 'action_controller/action_caching'
end

我也尝试在engine.rb 中设置config.action_caching = true

我确定我错过了一些非常基本的东西,只是无法找出什么!

EDIT1

也尝试为应用程序中的操作添加caches_action。它会引发同样的错误。

为了调试,我在 gem 中添加了一些打印语句

在这一行require 'action_controller/action_caching',并且在服务器启动时打印true

这更莫名其妙!

【问题讨论】:

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


    【解决方案1】:

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

    感谢 Andrew White 回复了我在 Github 上提出的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多