2013-04-07 4 views
5

Я пытаюсь перейти на rails 4 beta 1, но у меня есть небольшая проблема.undefined method `caches_action 'для ApplicationController: Class

Это, короче говоря, как выглядит мой контроллер приложений.

class ApplicationController < ApplicationController 
    caches_action :method 
end 

caches_action перемещается к его собственному драгоценному камню в Rails 4, поэтому в том числе драгоценного камня должны исправить эту проблему.

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
  • рубин 2.0.0
  • Rspec 2.13.1
+0

Просто из любопытства, вы «требовали» actionpack-action_caching'' перед использованием 'caches_action'? – mudasobwa

+0

Я просто попробовал 'gem 'actionpack-action_caching', github: 'rails/actionpack-action_caching', требует:« actionpack-action_caching »', в результате чего «невозможно загрузить такой файл - actionpack-action_caching (LoadError)» – Oleander

+0

Oooups , Прости. Я взглянул на код, вам нужно «потребовать actionpack/action_caching», а не «require» actionpack-action_caching'' (косая черта вместо минуса.) Поскольку кеширование больше не является частью ядра, вам нужно явно указать ' require' в верхнем строчке каждого файла, в котором вы его используете. – mudasobwa

ответ

11

Поскольку кэширование не является частью ядра больше, вы должны явно требовать его верх каждого файла вы используете его в:

require 'actionpack/action_caching' 
+0

Этот ответ указывает, что вам не нужно будет требовать его явно: https://github.com/rails/actionpack-action_caching/pull/11 –

2

проблема заключается в Rails 4, они извлекли часть кэша в отдельные камни

, если вы получаете сообщение об ошибке для кэширования действий, то вам нужно добавить ниже драгоценный камень

gem 'actionpack-action_caching' 

для кэширования страниц должны добавить

gem 'actionpack-page_caching' 

Я также играл тогда я выясняю, что есть не добавлял драгоценный камень, чтобы сделать то же самое.

желающий эта работа будет. Спасибо.

Смежные вопросы