2012-01-23 41 views
8

Sử dụng Rails.cache.fetch như dưới đây là bộ nhớ đệm ngay cả trong môi trường phát triển của tôi (với bộ nhớ đệm tắt):Rails.cache.fetch bộ nhớ đệm trong phát triển

@boat_features = Rails.cache.fetch("boat_features", expires_in: 10.minutes) do 
    BoatFeature.all 
end 

Có ai chạy vào trong này trước đây chưa?

Trả lời

7

Điều đó là bình thường. Loại bộ nhớ đệm đó không bị tắt trong quá trình phát triển. Trong một ứng dụng trước đây, đây là vấn đề chúng tôi đã sử dụng kho lưu trữ bộ nhớ và sau đó thêm một phần mềm trung gian đã làm Rails.cache.clear sau mỗi yêu cầu.

Something như

config.middleware.use ClearCache 

trong development.rb

và sau đó middleware ClearCache của bạn sẽ giống như

class ClearCache 
    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    @app.call(env) 
    ensure 
    Rails.cache.clear 
    end 
end 

Trong Rails 3.2 có cũng ActiveSupport::Cache::NullStore

+4

Các nullstore thể được thêm vào development.rb với config.cache_store = [: null_store] – nasmorn

+0

@frederick - khá chắc chắn đó là không đúng sự thật - config/môi trường /development.rb đã tắt "perform_caching" theo mặc định –

+1

Thực hiện bộ đệm ẩn không liên quan đến Rails.cache.fetch –

6

tôi đã có cùng một vấn đề. Tôi đã làm việc xung quanh rất nhiều sau đó đã đưa ra giải pháp đơn giản này. Trong tập tin cấu hình phát triển của bạn config/environments/development.rb thêm các thiết lập

config.perform_caching = false config.cache_store = :null_store

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