2011-04-12 26 views
16
gelişmede

ile geliştirme modunda Caching, aşağıdaki (basitleştirilmiş) ifadesi her zaman bir önbellek gereksinimi kaydeder, üretimde o beklendiği gibi çalışır:raylar 3. - Rails.cache.fetch

@categories = Rails.cache.fetch("categories", :expires_in => 5.minutes) do 
    Rails.logger.info "+++ Cache missed +++" 
    Category.all 
end 

Ben config.cache_classes değiştirirseniz config/development.rb dosyasında false 'den true' ya doğrudur, ancak geliştirme modunda da çalışır, ancak bu, gelişimi oldukça acı verici hale getirir. Rails.cache.fetch'in mümkünse önbellekten getirilmesi dışında config.cache_classes = false gibi bir yapılandırma ayarı var mı?

cevap

31

aşağıdaki yerleştirmeyi deneyin /config/environments/development.rb yılında: önbellek deposu yapılandırma /config/environments/production.rbise

# Temporarily enable caching in development (COMMENT OUT WHEN DONE!) 
config.action_controller.perform_caching = true 

ayrıca, daha sonra olacak Uygun satırı development.rb'a da kopyalamanız gerekir. Örneğin, önbellek mağaza Dalli Memcache'ı mücevher ise: yardımcı

# copied from production.rb into development.rb for caching in development 
config.cache_store = :dalli_store, '127.0.0.1' 

Umut. ENV [ "DEV_CACHE"] buna normal olmayan önbelleğe alma yapılandırma olan bir yerde ile, içindeki test yapılandırma koymak sürece

+9

Sadece bir bonus ipucu, bir ekleyin. Daha sonra terminalinizde önbelleğe almayı etkinleştirmek istediğinizde, DEV_CACHE = "ANYTHING" ifadesini dışa aktarabilirsiniz. En iyi bölüm, istemediğinizde yanlışlıkla önbelleğe alma işleminin etkin olmasını sağlamaktır. – tehprofessor

+1

Bu ipucu, çözümle birlikte süper faydalıdır. – anbiniyar