我有一个Rails应用程序,有时需要长时间导入新数据。当此导入正在运行时,用户不应该执行任何“写入”任务(即创建新项目等)。导入作业正在通过DelayedJob
运行所以基本上我需要后台任务来做到这一点:
1)将应用程序状态设置为“导入 - 应用程序现在是只读”
2)运行导入
3)将应用程序状态设置为“所有就绪 - 应用程序现在再次正常运行”
简单地说 - 只是一个布尔标志,但是应该在所有进程中全局可用的标志。问题是:实施此操作的最佳做法是什么?
我可以使用此标志作为字段轻松创建名为ApplicationState的ActiveRecord模型。然而,这似乎有点像矫枉过正。
所以任何替代方案都将受到高度赞赏。
/ Carsten
答案 0 :(得分:1)
我最终创造了这个小宝贝:
https://gist.github.com/carstengehling/6495127
为此目的工作相当不错。有点像推出,虽然不是用户特定的,而是使用AR而不是Redis。
任何发现这种方法有趣的人,请告诉我 - 我可以做一个宝石。
答案 1 :(得分:0)
这是Rollout的一个很好的用例。