2010-05-21 76 views
5

無論在測試版/生產服務器上,您如何在rails中的實時服務器上進行有效調試?在Rails中的生產服務器上進行調試

我試過直接在服務器上修改文件,並重新啓動應用程序,但變化似乎並沒有生效,或者需要很長的時間(緩存?)

我也試着做「腳本/服務器生產「,但這很慢

另一種選擇是編碼和部署,但效率非常低。

任何人都有什麼見解,他們如何有效地做到這一點?

回答

7

我會回答你的問題,即使我不熱修補功能服務器代碼:)這種方式同意

首先,你真的確定你已經重新啓動服務器?您可以通過拖拽日誌文件來檢查它。

您更改的代碼顯示的視圖可能會被緩存。緩存頁面位於tmp/cache文件夾下。您可以嘗試手動刪除文件,或者您可以將它們全部刪除。無論如何,你可以看到你的log/production.log文件(它會告訴你像'渲染緩存...')。

另一點:某些數據也存儲在會話中。您也可以嘗試刪除會話(或者,刪除所有會話;如果您將會話保留在數據庫中,則可以運行rake db:sessions:clear

+0

偉大的祕訣: 1)尾礦日誌文件(我可以尾巴雜種記錄以及) 2)耙TMP:緩存:明確(感謝) PS:我用CODA直接編輯登臺服務器代碼。 =) – 2010-05-21 16:35:04

2

要在生產模式下運行的本地服務器,請嘗試:

RAILS_ENV=production script/server 

script/server --environment=production 

的問題是,除非您也使用在WEBrick /雜種服務器在實際生產中,這樣做不會正好重複您的實際生產配置(推測使用Apache或乘客?)。此外,在可能導致問題的環境中可能存在細微的差異。

當你改變那裏的東西時,你如何重新啓動生產環境?這取決於你的部署方式,它可能就像在應用程序的/ tmp中放置restart.txt一樣簡單,或者像重啓Apache或爲你的應用程序提供服務的Mongrel流程一樣困難(不是真的)。看起來很奇怪,當你這樣做時,你的改變需要很長時間纔會出現。

當生產模式出現問題時,我只檢查一下production.log,它通常指向修復方向。我在開發中實現這一點,然後重新部署。這通常會照顧到事情。使用Capistrano只需要3個命令(一個提交,一個推送和一個部署),除非你的設置比我的複雜得多。

+0

restart.txt是什麼意思? 我的設置也很簡單,但問題是有時我需要使用生產環境進行DEBUG,這意味着我需要經常進行。 =) – 2010-05-21 16:36:27

+0

在Passenger(用於rails部署的Apache模塊)下,通過在應用程序的/ tmp目錄中創建restart.txt文件來重新啓動應用程序。檢查文檔: http://www.modrails.com/documentation/Users%20guide。HTML#_redeploying_restarting_the_rack_application – Roadmaster 2010-05-22 22:44:02