2015-04-04 108 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

以我的經驗,這個設置工作正常。