2013-09-26 23 views

Trả lời

67

Tác vụ cào chỉ xóa các tệp được lưu trữ trên hệ thống tệp trong "#{Rails.root}/tmp/cache". Đây là mã cho nhiệm vụ đó.

namespace :cache do 
    # desc "Clears all files and directories in tmp/cache" 
    task :clear do 
    FileUtils.rm_rf(Dir['tmp/cache/[^.]*']) 
    end 
end 

https://github.com/rails/rails/blob/ef5d85709d346e55827e88f53430a2cbe1e5fb9e/railties/lib/rails/tasks/tmp.rake#L25-L30

Rails.cache.clear sẽ làm những việc khác nhau tùy thuộc vào ứng dụng của bạn thiết lập cho config.cache_store. http://guides.rubyonrails.org/caching_with_rails.html#cache-stores

Nếu bạn đang sử dụng config.cache_store = :file_store thì Rails.cache.clear sẽ có chức năng giống hệt với rake tmp:cache:clear. Tuy nhiên, nếu bạn đang sử dụng một số khác cache_store, như :memory_store hoặc :mem_cache_store, thì chỉ Rails.cache.clear mới xóa bộ nhớ cache của ứng dụng. Trong trường hợp đó, rake tmp:cache:clear sẽ chỉ cố gắng xóa các tệp khỏi "#{Rails.root}/tmp/cache" nhưng có thể sẽ không thực sự làm bất kỳ điều gì do không có gì có thể được lưu trữ trên hệ thống tệp.

+0

Khi chúng tôi thay đổi lưu trữ bộ nhớ cache thành: mem_cache_store, tôi nhận thấy rằng Rails.cache.clear bắt đầu xóa tất cả các phiên của người dùng, đăng xuất tất cả người dùng. Đó có phải là hành vi dự định không? Có cách nào để xóa bộ nhớ cache mà không cần chạm vào các phiên không? (Chúng tôi đang nâng cấp từ Rails 3 lên Rails 4) – sandre89

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