Rails的新手,正在寻找“正确”的方法来完成似乎直截了当的事情,但是我所读到的关于声音的一切都还不错。
我在Heroku上有一个Rails应用程序,并且已将呼叫添加到依赖于外部系统的端点上。如果调用失败,则需要进行一些后续操作,因此我将详细信息保存到错误日志中。我已经添加了一封通知电子邮件(在这类事情的闲置空间中),以提示我检查日志并进行后续跟踪。
万一端点陷入困境并反复失败,我希望能够限制闲置警报,这样我就不会向所有人发送垃圾邮件(例如,如果自上次离开30分钟后才向闲置空间发送电子邮件它提醒)。
为此,我想我需要:
在什么地方保存这种时间戳值合适?我读过全局变量是魔鬼(在这种情况下实际上是行不通的),但是对于我什至不知道的内部某些东西,其他选项(添加数据库字段,尝试simpleconfig gem)似乎过多/不正确将发生一次,更不用说频繁了。
是否有一种轻巧的方式来完成此任务?
答案 0 :(得分:1)
一种流行的选择是将其存储在Redis存储中-尤其是如果您已经为其他内容(例如缓存)进行了设置。由于这本身就是临时数据,因此您甚至可以使用Rails.cache
API来抽象细节,并使此代码只相信它会存储在某处。
如果失败,最直接的解决方案可能是创建一个微型单行表并将其存储在其中:这是过大的,但是不涉及任何异常操作,否则在中间可能会显得不合适Rails应用程序。
不过,作为一种快速而简单的解决方案,全局变量并不是没有问题的:它具有强大的局限性,例如它不会在多个服务器进程之间共享,并且在该进程的任何时候都会消失重新启动...但是如果这些加起来会带来很大的风险,例如,您会在30分钟的错误时间内收到4-6条通知-也许就足够了? (它还会免费为您提供“部署时重置”功能,因此,在您认为已解决问题之后,您会立即知道问题是否仍在发生。)