如何创建可用于所有Rails进程的“应用程序状态”

时间:2013-09-06 08:51:38

标签: ruby-on-rails

我有一个Rails应用程序,有时需要长时间导入新数据。当此导入正在运行时,用户不应该执行任何“写入”任务(即创建新项目等)。导入作业正在通过DelayedJob

运行

所以基本上我需要后台任务来做到这一点:

1)将应用程序状态设置为“导入 - 应用程序现在是只读”

2)运行导入

3)将应用程序状态设置为“所有就绪 - 应用程序现在再次正常运行”

简单地说 - 只是一个布尔标志,但是应该在所有进程中全局可用的标志。问题是:实施此操作的最佳做​​法是什么?

我可以使用此标志作为字段轻松创建名为ApplicationState的ActiveRecord模型。然而,这似乎有点像矫枉过正。

所以任何替代方案都将受到高度赞赏。

/ Carsten

2 个答案:

答案 0 :(得分:1)

我最终创造了这个小宝贝:

https://gist.github.com/carstengehling/6495127

为此目的工作相当不错。有点像推出,虽然不是用户特定的,而是使用AR而不是Redis。

任何发现这种方法有趣的人,请告诉我 - 我可以做一个宝石。

答案 1 :(得分:0)

这是Rollout的一个很好的用例。