2013-04-07 32 views
5

Tôi đang cố gắng nâng cấp lên đường ray 4 beta 1, nhưng tôi có một chút vấn đề.phương thức undefined `caches_action 'cho ApplicationController: Class

Điều này, ngắn gọn, cách bộ điều khiển ứng dụng của tôi trông như thế nào.

class ApplicationController < ApplicationController 
    caches_action :method 
end 

caches_action được chuyển thành đá quý riêng của nó trong Rails 4, vì vậy kể cả đá quý sẽ khắc phục được sự cố.

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

Nhưng khi tôi chạy thông số yêu cầu của mình hoặc truy cập ứng dụng trong trình duyệt, tôi nhận được lỗi này.

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

Tại sao lại như vậy?

  • Rails 4.0.0.beta1
  • của Ruby 2.0.0
  • RSpec 2.13.1
+0

Chỉ vì tò mò, bạn đã 'yêu cầu' actionpack-action_caching'' trước khi sử dụng 'caches_action'? – mudasobwa

+0

Tôi vừa thử 'gem 'actionpack-action_caching', github: 'rails/actionpack-action_caching', yêu cầu:" actionpack-action_caching "', dẫn đến 'không thể tải tập tin như vậy - actionpack-action_caching (LoadError)' – Oleander

+0

Oooups , lấy làm tiếc. Tôi đã xem xét mã, bạn cần phải 'yêu cầu actionpack/action_caching' thay vì' require 'actionpack-action_caching'' (dấu gạch chéo thay vì trừ.) Vì bộ nhớ đệm không phải là một phần của lõi nữa, bạn cần phải rõ ràng ' require' nó ở trên cùng của mỗi tập tin bạn sử dụng nó. – mudasobwa

Trả lời

11

Khi bộ nhớ đệm không phải là một phần của lõi nữa, bạn cần phải yêu cầu một cách rõ ràng trong đầu mỗi tập tin bạn sử dụng nó trong:

require 'actionpack/action_caching' 
+0

Phản hồi vấn đề này cho thấy rằng bạn không cần phải yêu cầu nó một cách rõ ràng: https://github.com/rails/actionpack-action_caching/pull/11 –

2

vấn đề là trong Rails 4, họ đã chiết xuất một phần bộ nhớ cache vào đá quý riêng biệt

nếu bạn đang nhận lỗi cho bộ nhớ đệm hành động thì bạn cần phải thêm vào dưới đây đá quý

gem 'actionpack-action_caching' 

cho trang bộ nhớ đệm đã thêm

gem 'actionpack-page_caching' 

Tôi cũng chơi xung quanh sau đó tôi tìm ra rằng, có không thêm đá quý để làm như vậy.

hy vọng rằng nó sẽ hoạt động. Cảm ơn bạn.

Các vấn đề liên quan