在一个控制器中使用这样的Rails内存缓存。
def form_config_cache
Rails.cache.fetch("form_config", :expires_in => 12.hours) do
puts 'Building cache...'
form_config = s3_read_object('form_config.js')
return JSON.parse(form_config)
end
end这对于定义控制器的控制器来说是很好的。但是,当我试图从另一个控制器读取值时,它将返回为零。有人能解释一下到底是怎么回事吗?下面是我试图在另一个控制器中读取它的方法。
form_config = Rails.cache.read('form_config')发布于 2015-01-28 21:13:05
您的代码实际上没有缓存任何内容:return从整个方法中返回,因此存储缓存中值的fetch比特永远不会执行,并且您对read的调用也不会返回。
您既可以使用next,也可以什么都不用:
def form_config_cache
Rails.cache.fetch("form_config", :expires_in => 12.hours) do
form_config = s3_read_object('form_config.js')
JSON.parse(form_config)
end
endhttps://stackoverflow.com/questions/28202409
复制相似问题