问题标签 [sweeper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2740 浏览

ruby-on-rails - 在 Rails 中使用 RSpec 测试扫地机

我想确保我的清扫器被适当地调用,所以我尝试添加如下内容:

但我只是得到:

我尝试在测试配置中打开缓存,但这没有任何区别。

0 投票
7 回答
6333 浏览

ruby-on-rails - 在 Rails 中,在仅模型设置中不会调用 Sweeper

我正在开发一个 Rails 应用程序,我在其中使用页面缓存来存储静态 html 输出。缓存工作正常。不过,我在使缓存过期时遇到问题。

我相信我的问题部分是因为我没有使控制器中的缓存过期。为此所需的所有操作都在模型中处理。这似乎应该是可行的,但是我发现的所有对基于模型的缓存过期的引用似乎都已过时,或者无法正常工作。

在我的 environment.rb 文件中,我正在调用

我在 /sweepers 文件夹中有一个 LinkSweeper 文件:

那么......为什么在我更新模型时它不删除缓存页面?(过程:使用脚本/控制台,我正在从数据库中选择项目并保存它们,但它们的相应页面并未从缓存中删除),并且我还在调用通常会调用的 Link 模型中的特定方法扫地机。两者都不起作用。

如果重要,缓存文件是链接表中键值的 md5 散列。缓存页面存储为 /l/45ed4aade64d427...99919cba2bd90f.html 之类的内容。

从本质上讲,Sweeper 似乎并没有真正观察 Link。我还读到(这里)可能可以简单地将清扫器添加到 environment.rb 中的 config.active_record.observers,但这似乎没有这样做(而且我不确定 app/sweepers 的 load_path 是否在 environment.rb 中避免了这一点)。

0 投票
2 回答
821 浏览

ruby-on-rails - 动作缓存没有正确过期,即使我可以看到它正在被调用

我有一个清扫器,它应该会过期一些动作缓存。即使调试器在调用 expire_action 之前立即停止,它实际上并没有使操作过期。知道会发生什么吗?

这是相关的清扫器和控制器。

#company_sweeper.rb(在“模型”目录中)

#reports_controller.rb

我知道它不会过期的方式是完整的报告会返回旧数据,并且几乎可以立即做出响应。很奇怪,对吧?

0 投票
1 回答
2503 浏览

ruby-on-rails - rails - caches_action expire_action

我想使缓存的操​​作过期,并想知道如何生成正确的引用。

所以这几乎没问题,只是缺少主机。我该怎么做才能将此提供给 expire_action 方法?

提前致谢。

0 投票
1 回答
1721 浏览

ruby-on-rails - Rails 清扫器可以跨不同的控制器工作吗?

我的站点索引上有动作缓存,并设置了一个运行良好的 SiteSweeper:

但是我也想在保存或销毁任何发布者时使 /admin/sites 过期。是否可以让 PublisherSweeper 用类似的方式使站点索引过期?

我知道我可以在各种发布者操作中调用 expire_action '/admin/sites' 。我只是想知道扫地机是否有这种能力(让我的控制器更干净一些)。

0 投票
1 回答
1029 浏览

ruby-on-rails - Rails 缓存:对需要参数的操作使用清扫器

我正在尝试使用清扫器来处理我的页面刷新。对于刷新索引操作等,一切正常……但我似乎无法让扫地者解释页面参数。如果有人能告诉我下面的代码有什么问题,我将不胜感激:

控制器:

# 这会创建缓存,但不会刷新它(永远)。如果我将 expire_page 命令直接放入操作中(而不是清扫器),它可以正常工作

扫地机:

0 投票
1 回答
411 浏览

ruby-on-rails - 调用清扫器时,Rails 不会删除缓存/.html 页面

我在使用 Rails 中的 Sweepers 和缓存时遇到了一些问题。

/cache 中的 .html 文件是在第一次查看时生成的。

需要时调用 Sweeper 操作。

但是,清扫器操作不会从 /cache 中删除 .html 页面

下面的代码是从我的 /controllers 和 /sweepers 目录中删除的。这两行都记录了puts,所以我知道我们执行得很好—— expire 命令似乎没有删除文件。

有人知道我可以在哪里玩耍吗?

0 投票
2 回答
670 浏览

ruby-on-rails - 如何在清扫器中包含具有缓存过期的模块?

我们在 rails 应用程序中有以下清扫器:

我们想将 after_update、after_delete 和 after_create 回调提取到一个名为“ExpireOptions”的模块中

该模块如下所示('expire_options' 方法留在原始清扫器中):

但是缓存过期只有在我们在清扫器中明确定义方法时才有效。有没有一种简单的方法可以将这些回调方法提取到模块中,并且仍然可以工作?

0 投票
2 回答
649 浏览

ruby-on-rails - 如何在 Rails 清扫器中访问命名路线?

我有一个清扫器,它通过在分叉进程中打开 url 来重新加热缓存。为这些 url 硬编码主机很容易,但我希望它根据环境动态更改。

我知道我可以为此设置全局/环境变量,但我真的很想使用命名路由。有没有办法做到这一点?

(我应该澄清一下,我已经尝试将命名路由放在那里,但它们在运行时无法解析。)

0 投票
1 回答
1320 浏览

ruby-on-rails-3 - 用于 has_and_belongs_to_many 关联的 Rails3 缓存清扫器

我在 Rails3 应用程序中建模了以下关系:

“SkillsUser”模型表示用户和技能之间的多对多关联。这样,当用户添加一个新技能,并且该技能已经存在于“技能”表(即“Java”)中时,我只需在技能_用户表中创建现有技能与用户之间的关系。都好。

在用户视图中,我显示技能列表。我有一个围绕这些技能的片段缓存块。

在单独的编辑页面上,用户可以添加或删除技能。此操作只是创建或删除技能用户记录。发生这种情况时,我需要使片段缓存无效,以便技能在用户视图上正确呈现。

所以我创建了一个CacheSweeper,它的生活目的是观察skills_users 关系。这是控制器:

这是扫地机:

问题是,在添加或删除技能用户记录之后(在 SkillsController 上“创建”或“销毁”之后),清扫器永远不会被调用。我的项目中有其他清扫器在工作,但他们都没有观察到多对多关联。

那么,我的问题是如何创建一个 CacheSweeper 来观察“has_and_belongs_to_many”关联?