我刚刚开始使用ActiveResource,并决定缓存一些模型,所以我不会不停地使用api。好的,很好。
我已经研究过期的缓存,并决定实施一个清扫器(我还没有做过)。这不起作用。
AR模型:
class Myresource < ActiveResource::Base
extend ActiveModel::Callbacks
define_model_callbacks :update
"stuff"
def current
Rails.cache.fetch("/key/#{self.id}", :expires_in => 5.minutes) do
Myresource.find(ID)
end
end
end
扫路机:
class MyresourceSweeper < ActionController::Caching::Sweeper
observe Myresource
def after_update(myresource)
expire_cache_for_myresource
end
private
def expire_cache_for_myresource
Rails.cache.delete '/key/myresource.id'
end
end
控制器:
cache_sweeper :myresource_sweeper
因此我只使用了AR和缓存以及Sweepers,我无法弄清楚在尝试各种组合之后应该去哪里看。我可以从控制台设置和过期资源,但在应用程序中,缓存已设置,但我没有做任何事情就是触发删除。
建议?
答案 0 :(得分:1)
您发布的代码有拼写错误。我有点怀疑这是你真正的问题,但是对于它的价值,我认为你的意思是写下你的扫地机如下:
class MyresourceSweeper < ActionController::Caching::Sweeper
observe Myresource
def after_update(myresource)
expire_cache_for_myresource(myresource)
end
private
def expire_cache_for_myresource(myresource)
Rails.cache.delete "/key/#{myresource.id}"
end
end
E.g。在您发布的原始代码中,您没有将资源传递给expire_cache_for_my_resource方法,因此反复使用相同的静态密钥。