簡體   English   中英

在Rails中的生產服務器上進行調試

[英]Debugging on the production server in Rails

如何在測試版/生產服務器上有效地調試rails中的實時服務器?

我嘗試直接在服務器上修改文件,然后重新啟動應用程序,但更改似乎沒有生效,或者需要很長時間(緩存?)

我也嘗試在本地做“腳本/服務器生產”,但這很慢

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

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

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

首先,您確定已重新啟動服務器嗎? 您可以通過拖尾日志文件來檢查它。

可以緩存由更改的代碼顯示的視圖。 緩存的頁面位於tmp/cache文件夾下。 您可以嘗試手動刪除該文件,也可以執行rake tmp:cache:clear ,它們都將被刪除。 無論如何,你可以通過拖尾你的log/production.log文件來確切地看到發生了什么(它會告訴你類似'渲染緩存......')。

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

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

RAILS_ENV=production script/server

要么

script/server --environment=production

問題是,除非您在實際生產中也使用webrick / mongrel服務器,否則這樣做不會完全復制您的實際生產配置(可能使用Apache或Passenger?)。 此外,可能導致您出現問題的環境可能存在細微差別。

當你改變那里的東西時,你是如何重新啟動生產環境的? 這取決於您的部署方式,它可能就像在應用程序的/ tmp中刪除restart.txt一樣簡單,或者像重啟Apache或為您的應用程序提供的Mongrel進程一樣困難(不是真的)。 當你這樣做時,你的更改需要很長時間才會出現,這似乎很奇怪。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM