【问题标题】:Rails cache from the console returning nothing nil来自控制台的 Rails 缓存不返回 nil
【发布时间】:2013-07-25 13:46:56
【问题描述】:

在开发或生产中,我无法从控制台看到缓存中的任何内容。

为了开发,我打开了缓存并将其设置为内存存储,在生产中我使用 Heroku 上的 dalli gem 和 Memcachier。

我尝试的每个键都返回 nil。

但是,在开发中,如果我在某处我正在执行 Rails.cache.fetch 之前输入 binding.pry,我可以在那里执行 Rails.cache.read 并看到返回的内容,如果是这样,执行不会进入到fetch的块。

从控制台,如果我尝试Rails.cache.read 使用刚刚在pry 断点控制台中返回缓存结果的相同键,我什么也得不到。似乎控制台有一个单独的缓存,好像从控制台我做Rails.cache.write("whatever", "blah")Rails.cache.read("whatever"),我得到“blah”作为回报,正如预期的那样。

有没有办法从控制台试验正在运行的服务器的缓存?

【问题讨论】:

    标签: ruby-on-rails caching rails-console


    【解决方案1】:

    更改您的缓存存储:内存存储只是将所有内容存储在进程的内存中,因此应用程序的每个实例都将具有单独的缓存。特别是控制台不会看到正在运行的 Web 应用程序中设置的任何内容。

    您可以使用文件存储(将数据存储在 tmp 中的临时文件中),也可以在本地使用 dalli 存储 - memcached 非常容易运行。

    【讨论】:

    • 好吧,这适用于开发,但我在生产中仍然一无所获,但我会接受你的回答,因为它确实回答了我提出的问题。对于视图中的片段缓存,我在 HAML 中执行- cache("the_key") do,我可以使用 Rails.cache.read 从控制台访问它吗?即使在切换到文件存储之后,它似乎也不是这样,即使在开发中也是如此。我怎样才能得到这些缓存的东西?
    • NM,我找到了自己的答案,使用 ActionController::Base.new.fragment_cache_key("the_key") 我得到了稍微修改的缓存键(在这种情况下,前面带有 view/),并且可以使用 Rails.cache.read 读取修改一个或只是使用未修改的密钥执行ActionController::Base.new.read_fragment("the_key") 来阅读。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2021-01-28
    • 2020-02-23
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多