Rails.cache.fetch开发中的缓存

时间:2012-01-23 12:48:05

标签: ruby-on-rails ruby caching

使用如下的Rails.cache.fetch甚至在我的开发环境中缓存(关闭缓存):

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

有没有人遇到过这个?

2 个答案:

答案 0 :(得分:8)

这是正常的。这种缓存在开发过程中没有被关闭。在之前的应用中,这是一个问题,我们使用了内存存储,然后添加了一个在每次请求后都Rails.cache.clear的中间件。

这样的东西
config.middleware.use ClearCache

in development.rb

然后你的ClearCache中间件应该看起来像

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

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

在Rails 3.2中,还有ActiveSupport::Cache::NullStore

答案 1 :(得分:7)

我遇到了同样的问题。我经常工作,然后想出了这个简单的解决方案。在开发配置文件config/environments/development.rb中添加这些设置

config.perform_caching = false config.cache_store = :null_store