實際上很難制定問題,所以我只是解釋一下情況。如何組織Rails應用程序和多個引擎的開發
我正在研究一個由多個子應用程序組成的應用程序。主應用程序只提供導航欄和一些基本功能,如配置用戶和權限,而子應用程序提供實際功能。
現在,這是一個Rails 2應用程序,子應用程序嵌入到框架中,它不是很好的設計,也非常複雜。 幸運的是,我們現在有引擎,這將是這個應用程序更爲理想的解決方案。
到現在爲止所有東西都在顛覆中,並且可以一次更新,共享代碼使用外部。我們希望在重組和重構時轉向git。 過去幾天我一直在尋找關於bundler,git submodules和git子樹的網頁,但是我還沒有找到一個很好的描述,當你正在開發所有的項目時,如何正確地管理一個包含多個引擎/寶石的大型項目。他們在同一時間。
我特別希望能夠:
- 使用捆紮機管理依賴
- 沒有安裝我們自己的寶石和發動機融入全球寶石路徑,但相對於主應用程序,作爲git倉庫
- 有我們自己的寶石和引擎設置爲git倉庫(可能與捆紮機的本地路徑覆蓋)
- 一個簡單的方法來獲取所有的依賴關係(包安裝),它拉的最新版本,我們自己的寶石和發動機,如果這是不可能的,那麼一家公司(或許是一個耙任務?)
- 使新開發人員能夠快速設置整個開發環境(git克隆應用程序,捆綁安裝依賴包括所有自己的Gems和引擎,本地)
- 部署與Capistrano的,容易
我已經想到了:
- 包括一切到一個倉庫,似乎擊敗的獨立寶石/發動機的宗旨,爲我,我也覺得它止跌不允許我們管理m的依賴關係在通過捆紮機我們的發動機AIN應用
- 使用子模塊,我瞭解爲什麼它是壞的,並與我們的開發人員數量,直到有人提交的子模塊指針承諾,只有在他的地方存在,只是時間早晚的問題太多帖子回購
- git的子樹工具,似乎很複雜,我
所以有你任何一個類似的設置,你怎麼管理它,使更新和提交更改儘可能容易?你把你的Engine/Gem代碼放在哪個應用程序依賴的地方?
TL; DR如何管理由多個引擎和寶石組成的大型鋼軌項目?
謝謝你的迴應!這是我們一旦有人敢開始向git遷移就要做的事情。 – maufl
而不是自己創建「捆綁安裝」腳本,這個寶石將爲你做:https://github.com/EPI-USE-Labs/git-bundle –
如果你需要擴展引擎/ git回購之間的功能,你可以用這個gem使用裝飾器模式:https://github.com/EPI-USE-Labs/activesupport-decorators –