Rails控制台“共享”CTRL + C.

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

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

(Rails 4.2.0)

Rails 4.1引入了Spring ,它加速了一些Rails组件(如控制台)的启动过程。

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

按Ctrl + C将SIGINT信号发送到Spring(您可以在运行连接到该服务器的控制台的所有终端上看到^C )但是Spring会忽略它们以避免终止主服务器 。

AFAICT从这个分析来看,你无能为力。

灵感来自@Benedikt B:

  • 第一次杀春:

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

  • 使用spring启动rails服务器/控制台:

rails s # main server

rails c # main console

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