rails caching:以json格式在另一个命名空间中的expire_action

时间:2013-04-25 15:41:17

标签: ruby-on-rails caching

我有一个json api,我执行动作缓存:

class Api::V2::TagsController < Api::V2::BaseController

  before_filter :set_cache_headers, :only => [:categories, :tribes]
  caches_action :categories, :tribes, :expires_in => 1.hour

我发现此缓存过期的唯一方法是使用:

Rails.cache.delete api_v2_categories_url(:locale => nil)+'.json?'

这非常难看

任何人都可以帮助我改善这个可怕的黑客攻击吗?


更多信息:

缓存效果很好,我在日志中看到缓存写入:

  

Cache write: http://localhost:3000/api/v2/categories.json?

在管理员命名空间中,我需要使缓存过期,我已尝试过:

expire_action(:controller =&gt;&#39; / api / v2 / tags&#39;,:action =&gt;&#39; categories&#39;,:format =&gt;:json)

哪个失败并输出:

  

过期片段   视图/本地主机:3000 / MU-8c54ade2-cbb77ba0-4f0c28d3-607169d0.json行动=类别&安培;控制器= API / V2 /标记&安培;语言环境= FR

P.S:我尝试过这个答案没有成功:rails caching: expire_action in another namespace

2 个答案:

答案 0 :(得分:0)

您可以在api中创建一个名为clear_categories的新路线,并在其中调用

expire_action :action => :categories

然后在你的管理员中点击那条路线。您还可以通过将重定向网址传递给clear_categories或其他类似内容来重定向回主叫管理页面。

答案 1 :(得分:0)

我有类似的问题,并使用下面的内容修复它,

expire_fragment(ActionCachePath.new(self, {
    :controller => '/api/v2/tags',
    :action => 'categories'
}, true).path)