2015-04-06 60 views
1

我有一個控制器操作,用於更改數據庫中所有記錄的狀態。我想在生產中運行它。在本地服務器上,我可以訪問導航控制檯並執行操作如何從生產命令行訪問控制器動作

=> x= WelcomeController.new 
=> x.method_name 

在生產中,我沒有導軌控制檯。我可以直接從命令行運行控制器方法嗎?執行這種任務的首選方式是什麼?我可以在任何地方像幫助者一樣移動方法。

+0

您可以在生產模式下運行IRB控制檯:如果已定義,「rails console production」將加載'production' env。默認情況下,'rails console'會運行'rails console development';但我不認爲你應該在控制檯中調用Controller方法。爲什麼不連接到您的網站並觸發控制器的操作?或者最終做出控制器行爲邏輯的耙子任務? – MrYoshiji

+0

如果你的意思是通過瀏覽器連接到網站,它會超時,因爲任務需要很長時間。 –

+1

然後做一個Rake任務或者做一個控制器動作觸發這個特定的rake任務;-) – MrYoshiji

回答

-1

將這樣的邏輯保存在控制器中是一種不好的做法。您絕對應該將其移至模型或服務層。我建議你看看this article

+0

這篇文章完全是題外話。 –

+0

@JamilKhan你錯了,你應該使用一個Service類來保存你的進程的邏輯。然後,無論是Controller的操作,Rake Task還是直接在你的控制檯中,你都可以調用這個服務類並要求它執行邏輯。文章並非完全脫離主題,有些建議不適合您,但重構的概念與您的案例非常相關。 – MrYoshiji