2017-10-23 13 views
1

私はEventというモデルを持っています。私は、コントローラ内all_eventsメソッドを呼び出すRailsローレベルのキャッシュがキャッシュされていません

def self.all_events 
    Rails.cache.fetch("events", expires_in: 2.days) do 
     Event.all.to_a 
    end 
end 

:イベントモデルでは、私は次のコードを持っています。上記の場合、サーバーログにはコントローラコードが初めて呼び出され、その後2日ごとにイベントがメモリ内の配列として存在する必要があります。何らかの理由で、サーバーログにデータベースクエリが毎回表示されます。どのようにキャッシュ作業を行うのですか?

+0

これは開発環境でテストしていますか? – MrYoshiji

+0

英雄と開発。それはどちらにも働かない。 – Philip7899

+0

どのバージョンのRails? 'config.cache_store =:file_store、 'tmp/cache'' – Daiku

答えて

0

両方の環境でキャッシュ設定を正しく設定する必要があります。

私はHeroku社の生産環境にRedisを使用します。開発環境では、memory_storeまたはfile_storeオプションを使用できます。 https://elements.heroku.com/addons/heroku-redis

Gemfile

gem 'redis-rails' 

設定/環境/ production.rb

Rails.application.configure do 
    config.action_controller.perform_caching = true 
    config.cache_store = :redis_store 
end 

設定/環境/ development.rb

Rails.application.configure do 
    config.action_controller.perform_caching = true 
    config.cache_store = :memory_store 
end 

あなたは上のキャッシュするためのより詳細な情報を見つけることができますそこにはRuby on Railsがあります。 http://guides.rubyonrails.org/caching_with_rails.html

関連する問題