[英]Rails deployment strategies with Bundler and JRuby
我有一個jruby rails應用程序,我剛開始使用bundler進行gem依賴管理。 我有興趣聽取人們對部署策略的意見。 文檔說bundle package
會將您的gem打包在本地,因此您不必在服務器上獲取它們(我相信warbler默認情況下會這樣做),但是我個人認為(對我們而言)這不是可行的方法我們部署的代碼(在本例中為WAR文件)變得更大。
我的偏好是模仿我們的MVN設置,該代碼將代碼復制到服務器后直接在服務器上獲取所有依賴項。 這就是我的想法,所有評論都值得贊賞:
第一步:建立war文件,復制到服務器
第2步:在服務器上解壓戰爭,使用mvn獲取Java依賴項第3步:使用Bundler提取Gem deps(這些應該放在哪里?
*步驟3是我不清楚的步驟。 我是否在考慮特定目標的情況下運行bundle install
?
步驟4:重新啟動Tomcat
再次,我的理由是我想在部署時將依賴項與代碼分開。 我還想將所有gem依賴項放置在應用程序本身中,以便包含它們,而不是將它們安裝在應用程序用戶的主目錄中(同樣,我相信這是Bundler的默認設置)
僅查看Warbler的默認結構,它將gems復制到Rails.root/gems
,所以我決定遵循該約定。
*注意:我看不到任何將此路徑定義為Rails的加載路徑的地方,但是顯然可以。 這是我的最終解決方案:
Step1: Build war file, copy to server
Step2: Unpack war on server, fetch java dependencies with mvn
Step3: use Bundler to fetch Gem deps: `bundle install gems --without test --disable-shared-gems`
Step4: Restart Tomcat
另請注意, bundle install gems
看起來像特定命令,即。 “安裝這些gems”,但是這些gems
實際上是指Rails.root中的目錄gems。 該目錄由捆綁器創建,因此在部署時不需要存在。
希望對其他尋求類似解決方案的人有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.