【发布时间】:2013-10-01 04:43:12
【问题描述】:
我想知道如何以编程方式从应用程序本身内退出 Sinatra 应用程序。 (还有另一个关于从应用程序外部停止它的 SO 线程。)
我想使用 Sinatra 作为一种接收控制和配置命令的方式,而我的应用程序执行与 Sinatra 无关的事情。我希望控制命令之一是“退出”。 Ruby 的“退出”方法似乎只是导致 Sinatra 恢复和恢复。我在 base.rb 中发现了这一点,我认为这证实了这一点:
at_exit { Application.run! if $!.nil? && Application.run? }
到目前为止,我发现的唯一方法是调用 Ruby 的 exit! 方法,但这绕过了 exit 钩子,并不是一个非常干净的解决方案。
有没有办法以编程方式告诉 Sinatra 停止?
【问题讨论】:
-
老实说,我不记得 8 年前当我发布这个问题时我需要什么。我想如果满足某些外部条件,我想终止。我认为@bigtunacan 的方法是(不幸的是,因为我不太喜欢猴子补丁)最好的方法。我可以启动一个线程来进行检查并在必要时调用
exit!。 (续) -
...我猜除了 Sinatra 之外,这将绕过所有退出钩子,我希望避免这种情况。