从初始化程序终止当前的Rails实例

时间:2014-02-06 00:37:13

标签: ruby-on-rails ruby-on-rails-4

我正在编写一个完整性检查初始化程序,如果不满足某些属性,它应该会终止Rails进程。以这种方式中止生产服务器启动过程最安全的方法是什么?我想一个极端情况正在运行exit,但我不确定这是否是最佳方法。

如果重要的话,在独角兽上运行它。

1 个答案:

答案 0 :(得分:3)

结束ruby过程有三种方法:

  • exit将以状态0(成功)结束流程。
  • exit!将以状态1结束(这似乎适合您的情况),也不会运行使用Kernel#at_exit定义的块(可能是您可能需要也可能不适合)。
  • abort将以状态1结束,运行Kernel#at_exit个阻止。你也可以给它一个字符串,然后发送到标准输出。

所以abort可能是你最好的选择。除非你有特殊的理由不运行Kernel#at_exit块,否则你可能想要运行它们。

由于unicorn只运行一次初始化程序,然后在此之后分叉处理,这种方法应该没问题。

我要补充一点,我猜你是在“错误”级别进行这些检查 - 如果可能的话,你应该在rails的上下文之外检查你的环境的健康状况。但是我不知道你的情况,我意识到有时候解决方案的速度比它的优雅更有价值。 :)