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
根据我的经验,这个设置工作正常。