2013-04-07 37 views
5

我正在嘗試升級到rails 4 beta 1,但是我遇到了一些問題。ApplicationController未定義的方法`caches_action':

這就是我的應用程序控制器的外觀。

class ApplicationController < ApplicationController 
    caches_action :method 
end 

caches_action被移出到它自己的寶石在軌道4,5,所以包括創業板應該可以解決問題。

gem "actionpack-action_caching", github: "rails/actionpack-action_caching" 

但是當我運行我的請求規格或在瀏覽器中訪問應用程序時,出現此錯誤。

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

這是爲什麼?

  • Rails的4.0.0.beta1
  • 的Ruby 2.0.0
  • Rspec的2.13.1
+0

出於好奇,你在使用'caches_action'之前是否需要'actionpack-action_caching''? – mudasobwa 2013-04-07 13:53:29

+0

我剛剛嘗試過'gem'actionpack-action_caching',github:'rails/actionpack-action_caching',要求:「actionpack-action_caching」',導致'無法加載這樣的文件 - actionpack-action_caching(LoadError)' – Oleander 2013-04-07 14:01:44

+0

Oooups ,對不起。我看了一下代碼,你需要'需要actionpack/action_caching'而不是'require'actionpack-action_caching''(斜槓而不是減號)。由於緩存不再是核心的一部分,你需要明確'需要在你使用它的每個文件的頂部。 – mudasobwa 2013-04-07 14:11:37

回答

11

由於緩存是不是核心的一部分了,你需要明確要求它每個文件的頂部,你在使用它:

require 'actionpack/action_caching' 
+0

這個問題的迴應表明你不應該明確要求:https://github.com/rails/actionpack-action_caching/pull/11 – 2014-06-11 17:07:27

2

的問題是Rails中4,他們已經提取緩存部分進入單獨的寶石

,如果你正在爲動作緩存錯誤,那麼你需要下面的寶石

gem 'actionpack-action_caching' 

增加對頁面緩存也增加

gem 'actionpack-page_caching' 

我也打得四處然後我弄清楚的是,有沒有添加寶石來做同樣的事情。

希望能起作用。謝謝。