[英]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.