ApplicationController的未定义方法`caches_action':Class

Lin*_*der 5 ruby ruby-on-rails ruby-2.0 ruby-on-rails-4

我正在尝试升级到rails 4 beta 1,但我有点问题.

简而言之,这就是我的应用程序控制器的样子.

class ApplicationController < ApplicationController
  caches_action :method
end
Run Code Online (Sandbox Code Playgroud)

caches_action 在Rails 4中移出它自己的宝石,所以包括gem应该解决问题.

gem "actionpack-action_caching", github: "rails/actionpack-action_caching"
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的请求规范或在浏览器中访问应用程序时,我收到此错误.

app/controllers/application_controller.rb:3:in `<class:ApplicationController>': undefined method `caches_action' for ApplicationController:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

这是为什么?

  • Rails 4.0.0.beta1
  • Ruby 2.0.0
  • Rspec 2.13.1

Ale*_*kin 12

由于缓存不再是核心的一部分,因此您需要在使用它的每个文件的顶部明确要求它:

require 'actionpack/action_caching'
Run Code Online (Sandbox Code Playgroud)


Ram*_*are 5

问题出在 Rails 4 中,他们将缓存部分提取到单独的 gem 中

如果您收到操作缓存错误,那么您需要添加以下 gem

gem 'actionpack-action_caching'
Run Code Online (Sandbox Code Playgroud)

对于页面缓存必须添加

gem 'actionpack-page_caching'
Run Code Online (Sandbox Code Playgroud)

我也玩了一下,然后我发现,没有添加宝石来做同样的事情。

希望这会起作用。谢谢。