請問修改了rb的程式碼沒有反應


#1

抱歉我是新手
我修改了rb的程式碼,但是他沒有如預期地跑,我有重啟了apache
是不是還是會被cache住??
感謝


#2

依照 deploy 的不同會有不同的結果哩 …

如果你是 passenger 的話,流程大概是

( apache | nginx )[ passenger => rails ]

因為 passenger 由 http server 開,所以重啟 http server 會連帶重啟,但如果你用其餘的(unicorn puma rainbows … 不過不確定)是 reverse proxy 模式的,可能是這樣子

( apache | nginx ) ==> reverse proxy ==> ( unicorn => rails )

所以你重啟 http server 並不代表會重啟後面的 application server

再來要看啟動環境,類似新版的 gem 有加一個 spring 來做 dev 時期的快速重啟,但缺點就是你說的 … 可能不會更新到新的 code 去,所以可以考慮把 spring 移除就是

anyway 以上,實際其實還是要看 deploy 方式 & 流向就是,否則你的 reverse proxy 可以打超多層的哩,然後順便檢查 gem 是否有快取之類的,最後還有可能是有 LB + 多台主機而你沒更新到之類的,大概就這樣唄


#3

感謝 JockerCatz的解說, 其實我對這不熟系主要是想修改點redmine的code去改一下view的東西, 看來還是必須先知道他deploye的方式才可以有效地重啟, 我會在研究下!

感謝詳盡地回答


#4

看來 redmine 是 puma,不過也有可能用 docker 架的,你要看怎樣安裝就知道怎樣 deploy 唄?通常設定檔甚至看 Gemfile 內都有寫就是,因為 deploy 方式只會選一種哩