【发布时间】:2013-01-20 00:27:03
【问题描述】:
我继承了一个看起来使用 memcached 的 Rails 项目。
我有一个控制器,在一种方法中我将一个值存储在缓存中:
Rails.cache.write("key", @var)
在随后在同一个控制器中调用的另一个方法中,我读回它:
@var = Rails.cache.read("key")
并且变量为零。为什么缓存不起作用? 我刚刚开始使用 ROR,所以很有可能它是非常基本的东西。
【问题讨论】:
我继承了一个看起来使用 memcached 的 Rails 项目。
我有一个控制器,在一种方法中我将一个值存储在缓存中:
Rails.cache.write("key", @var)
在随后在同一个控制器中调用的另一个方法中,我读回它:
@var = Rails.cache.read("key")
并且变量为零。为什么缓存不起作用? 我刚刚开始使用 ROR,所以很有可能它是非常基本的东西。
【问题讨论】:
只需检查几件事:
您是否在开发环境中启用了缓存?
您没有说明您使用的是哪个版本的 RoR,但是在 development 环境中默认情况下未启用缓存。
要启用它,请在config/environments/development.rb 文件中设置config.action_controller.perform_caching = true。
你启动了memcached服务器了吗?
如果没有,请以memcached -vv开头
如果在您尝试写入缓存时您的 memcached 服务器已关闭,则对 Rails.cache.write 的调用将返回 false,随后对 Rails.cache.read 的调用将因此返回 nil。
【讨论】: