Rails低级缓存不缓存

时间:2017-10-23 20:21:53

标签: ruby-on-rails ruby caching activerecord ruby-on-rails-5

我有一个名为Event的模型。在事件模型中,我有以下代码:

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

我在控制器中调用all_events方法。如果上述方法有效,则服务器日志应该仅在第一次调用控制器代码时显示查询,并且在接下来的两天之后每次都应该将事件作为数组存在于内存中 - 对吗?出于某种原因,服务器日志每次都显示数据库查询。如何使缓存工作?

1 个答案:

答案 0 :(得分:-1)

您必须在两种环境中正确配置缓存设置。

我更喜欢Redis用于Heroku的生产环境。您可以在开发环境中使用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