我正在尝试调试在 Heroku 上运行的 Rails (5.0.0.beta2) 的缓存视图中的陈旧条目。我想查看缓存中的条目,以确认它们的命名方式符合我的预期,并且它们应该过期。
\n\n有什么办法可以做到这一点吗?我发现这个问题,我如何查看rails缓存的内容,这表明Rails.cache.read("your_key")。所以,使用bin/rails c(在 Heroku 上)我尝试过:
Rails.cache.read(User.find(19).cache_key) => nil\nRun Code Online (Sandbox Code Playgroud)\n\n其中 19 是:id我看到过时数据的用户之一的用户。这让我有点难住了...
如果我尝试:
\n\nUser.find(19).cache_key => "users/19-20160316151228266421"\nRun Code Online (Sandbox Code Playgroud)\n\n但是,当缓存条目据称已过期时,日志行如下所示:
\n\nExpire fragment views/users/19-20160316151228266421 (0.2ms)\nRun Code Online (Sandbox Code Playgroud)\n\n所以我尝试Rails.cache.read在该路径上执行 a ,这也返回nil\xe2\x80\x93\xc2\xa0 我也尝试对尚未过期的用户执行相同的操作,然后nil再次得到。
我想知道路径中的差异是否表明存在问题,或者是否有办法查看创建的密钥的路径(我一直假设它至少与斜杠之后的部分匹配)。
\nCache 有以下实例变量:
[:@options, :@data, :@key_access, :@max_size, :@max_prune_time, :@cache_size, :@monitor, :@pruning]
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法检查数据:
Rails.cache.instance_variable_get(:@data)
Run Code Online (Sandbox Code Playgroud)