2016-07-18 61 views
3

這種情況在很多場合都發生過,我希望我能在這裏找到答案。Rails控制檯凍結手動刪除/銷燬操作

有時,在使用Rails控制檯並對對象執行#update或#destroy操作時,我的控制檯將在日誌中發佈「BEGIN」後簡單凍結。我現在有一個開放,一個簡單的摧毀,已經坐了十分鐘。

即:

my_object.find(permitted_params[:thing][:id]).destroy 

CTRL + C在我的Mac不殺它,只是呈現:

^C^C^C^C^C^C^C^C^C^C 

然後,當我終於殺了標籤,並重新啓動我得到的服務器:

A server is already running. Check /path/to/app/tmp/pids/server.pid. 

然後當我清除server.pid並嘗試重新啓動服務器時,我得到:

/Users/nickschwaderer/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:206:in `bind': Address already in use - bind(2) for 127.0.0.1:3000 (Errno::EADDRINUSE) 

在這一點上我跑lsof -wni tcp:3000,然後kill -9 #whatever_my_pid_was,到最後設置一切直奔重新運行該服務器。

在這裏發生了什麼山姆藍色的heck?

+0

'^ D'可能會殺死它? – MMachinegun

+0

也許發佈你的更新代碼並銷燬操作?是什麼導致凍結 – Ren

+0

您是否在開發時使用任何sql客戶端?某些客戶端使用事務進行更新/刪除查詢。在您關閉客戶端之前,交易未完成。如果您嘗試在從SQL客戶端運行查詢的同時在軌同步表上運行更新/銷燬查詢,則控制檯會凍結。 – Girish

回答

1

最近發生在我身上,我承認,當我發現時,我感到非常慚愧。

確保你沒有代碼暫停的地方。即使我試圖從控制檯上移除我的物體,也出現了一個由於某種原因而被解僱的單獨的binding.pry。

+0

在我的情況下,這不是問題,但在其他人遇到此問題時提高知名度。如果它發生在我身上,我會離開它,但是爲了記錄,自從我的Rails 5升級以來,我沒有重複這個過程。 – Schwad