【问题标题】:Rails won't exit on first CTRL-CRails 不会在第一个 CTRL-C 时退出
【发布时间】:2016-01-06 02:02:56
【问题描述】:

没有 Rails 命令将在第一个 CTRL-C 时退出。所以 rails s 或 rails c 需要我再次按下 control CTRL-C,而以前根本不需要 CTRL-C 的命令,例如 rake routes / db:migrate 现在需要我按下它。

我的任何队友都没有出现这个问题。我在 OSX 上使用 iTerm2。应用程序中没有“救援异常”的实例。

我刚刚使用 brew 重新安装了 mysql,但问题仍然存在。 Rails 版本 4.0.5 和 sql server 版本 5.6.27。知道问题出在哪里吗?

[2016-01-13 16:18:33] INFO  WEBrick 1.3.1
[2016-01-13 16:18:33] INFO  ruby 2.1.2 (2014-05-08) [x86_64-darwin13.0]
[2016-01-13 16:18:33] INFO  WEBrick::HTTPServer#start: pid=2329 port=3000
^C[2016-01-13 16:18:54] INFO  going to shutdown ...
[2016-01-13 16:18:54] INFO  WEBrick::HTTPServer#start done.
Exiting
^C

【问题讨论】:

  • 你用的是spring还是jruby?
  • 显示--trace 命令。
  • 我的直觉告诉我它与带有原生扩展的 gem 有关,你有多少? :)
  • 尝试在整个代码库中找到Signal.trap。如果信号处理程序是在 ruby​​ 代码中声明的,您会发现 Signal.trap("TERM") 语句。
  • 我确实找到了一些东西,但将其注释掉并没有解决。 Signal.trap 'TERM' do puts 'Unicorn master 拦截 TERM 并发送自己 QUIT 代替' Process.kill 'QUIT', Process.pid end

标签: ruby-on-rails ruby vim


【解决方案1】:

老实说,Webrick 1.3.1 于 2011 年 12 月 28 日发布,我建议不要使用此版本,原因请参见 webrick answer

正如你所说,它发生在 Rails 控制台和其他任务中(你应该把它放在问题中,因为它有助于调试)我建议它是导致这种情况的宝石(无论如何你应该更新你的 Rails 版本) 但我建议使用:

Ctrl-D

这应该会立即让你退出

【讨论】:

  • Puma 也会出现这个问题。我并不是在寻找一种解决方法(很容易按两次 CTRL-C)作为问题的根本原因。
【解决方案2】:

我怀疑这不是一个建议,但我开始在我的项目中默认使用 Puma,并且考虑到 Rails 5 默认迁移到 Puma,这可能不是一个坏建议。

我使用类似的环境,OS X 10.11.2、iTerm 2、tmux 等。我不记得是什么时候或什么促使了它,但在某些时候我的 WEBrick 项目开始以同样的方式运行,我开始移动尽可能将他们带到 Puma,这似乎没有表现出相同的行为。

我知道这并没有真正给出导致问题的明确答案,但我也知道这与系统性能无关。

【讨论】:

  • 这里没有骰子。相同的行为。只是想知道......你看到在开发中使用 puma 而不是 webrick 有什么好处? (我们在生产中使用 Nginx)。
猜你喜欢
  • 2017-02-06
  • 2020-10-11
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 2022-06-28
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多