Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails3终止复杂的操作_Ruby On Rails_Memcached - Fatal编程技术网

Ruby on rails Rails3终止复杂的操作

Ruby on rails Rails3终止复杂的操作,ruby-on-rails,memcached,Ruby On Rails,Memcached,假设我的控制器中有: caches_action :my_action, :cache_path => Proc.new { |c| "my_action##{c.params}" } 其中url类似于: /w/:some_id/:additional_params 缓存工作得很好,但是我找不到如何使其过期 我试过: expire_action(:controller => '/my_controller', :action => 'my_action') expire_

假设我的控制器中有:

caches_action :my_action, :cache_path => Proc.new { |c| "my_action##{c.params}" }
其中url类似于:

/w/:some_id/:additional_params
缓存工作得很好,但是我找不到如何使其过期

我试过:

expire_action(:controller => '/my_controller', :action => 'my_action')

expire_fragment(/my_action/)

store = ActionController::Base.cache_store
store.delete_matched(/my_action/)
但没有人会让我的行动失效。您知道这样的匹配操作是否可能过期吗?

从上的注释中,您可以在选项中添加
:expires\u:

caches_action :my_action, :expires_in => 1.hour,
  :cache_path => Proc.new { |c| "my_action##{c.params}" }
此外,正如您所指出的,您的URL-s的形式是
/w/:some_id/:additional_params
,因此URL中没有
my_action
。因此,您不会将任何对象与regexp
/my\u action/
匹配

这可能会使缓存过期:

expire_fragment(%r{/w/\d+/})
从上的注释中,您可以在
选项中添加
:expires\u:

caches_action :my_action, :expires_in => 1.hour,
  :cache_path => Proc.new { |c| "my_action##{c.params}" }
此外,正如您所指出的,您的URL-s的形式是
/w/:some_id/:additional_params
,因此URL中没有
my_action
。因此,您不会将任何对象与regexp
/my\u action/
匹配

这可能会使缓存过期:

expire_fragment(%r{/w/\d+/})
对,但是缓存路径中有“我的操作”。我会试试你的建议。对,但是缓存路径中有“我的动作”。我试试你的建议。