我正在尝试在开发中的Rails 4上设置手动低级缓存到期。在视图中的某个操作之后触发缓存到期,这导致后台作业(使用延迟作业)实际上是包含缓存代码的自定义类。
这是触发器:
if request.patch?
@startup_funding = StartupFunding.where(id: params[:id]).first
if @startup_funding.update_attributes(startup_funding_round_params)
redirect_to unique_names_path(@startup_funding.startup.unique_names.unique_name)
GraphUpdate.delay.update
end
end
这是我正在使用的自定义类,它会删除密钥并从头创建一个:
class GraphUpdate < ActiveRecord::Base
def update
Rails.cache.delete('x')
Rails.cache.fetch('x') do
'test123'
end
end
end
我在development.rb中激活了缓存:config.action_controller.perform_caching = true
当我最初尝试没有cache.delete('x')
时,我能够成功地将'x'保存为'test',但似乎缓存没有到期。
不确定出了什么问题。另外,如果我在Heroku中实现它,是否需要采取任何特殊操作,或者它是否已经开箱即用?
答案 0 :(得分:0)
要使缓存过期,您需要指定过期时间。这是一个link to the documentation。简而言之,您需要执行以下操作:
Rails.cache.fetch('x', :expires_in => 60.seconds) { 'test123' }