2015-04-04 96 views
3

当我打开两个Rails控制台并在其中一个按CTRL + C时,它将被发送到两个控制台。Rails控制台“共享”CTRL + C

这是为什么,我该如何防止这种情况?

(滑轨4.2.0)

+0

我们需要更多信息。操作系统,终端应用程序等等。 – 2015-04-04 17:31:48

+0

我正在使用Mac和Terminal.app。当我用两台终端登录到一台Ubuntu服务器并按下CTRL + C时,我的效果会相同 – 2015-04-04 19:04:55

回答

2

的Rails 4.1引入Spring,从而加快了一些Rails的部件的引导过程(如控制台)。

每个控制台现在都试图访问Spring服务器来检查现有的Rails应用程序是否已在运行。如果它找到一个,它会执行“温暖运行”,因为不需要启动应用程序。

按Ctrl + C发送SIGINT信号给Spring(并且您可以在运行连接到该服务器的控制台的所有终端上看到^C),但是Spring ignore them to avoid killing the master server

AFAICT从这个分析中,没有什么可以做的。

+0

我不确定我是否理解,您是否说过没有任何事情可以做到这一点?感谢您的输入 – 2015-04-06 20:29:49

+0

刚刚在我的文章中添加了一个结论:不,你不能对此做任何事情:-( – 2015-04-07 12:47:56

+0

我很无语,所以在Rails 4中同时使用多于1个控制台是不可能的?这种妥协只是对于一些更快的启动时间,我简直不敢相信,或者,有没有另一种方式比CTRL + C/Z放弃一个控制台? – 2015-04-07 17:18:17

0

通过@Benedikt乙启发:

  • 首杀春:

spring stop

  • 重新启动中隔离/长期运行的,你不想成为流程遇难:

DISABLE_SPRING=1 rake some_long_running_task

DISABLE_SPRING=1 rake some_other_long_running_task

DISABLE_SPRING=1 rails C# some console you don't start very often

  • 弹簧启动轨服务器/控制台:

rails s # main server

rails C# main console

以我的经验,这个设置工作正常。