![](/img/trans.png)
[英]rbenv - Ruby - How to switch ruby versions between multiple projects
[英]How to manage dependencies between my ruby projects?
這聽起來像一個基本問題,但是我在Internet上找不到任何答案。
所以我有一個git ruby項目database_models。 這是一顆寶石。 我希望其他3個項目使用它。 我在這3個項目中添加了對該項目的依賴:
gem "database_models", :git => "path", :branch => master
現在,我要AA develop
這3個項目的分公司使用的develop
database_models的分支,我想master
的3個項目的分支使用master
database_models的分支,讓自己的生產環境是穩定的,獨立的我的開發環境。
我可以看到執行此操作的4個選項,但我不喜歡其中任何一個:
將database_models部署到服務器,並使用路徑而不是git更新這3個項目以引用database_models
Git子模塊
用戶使用不同版本的database_models gem(1.1、1.2、1.3 ...)。 我可能需要自己的gem服務器,對嗎?
在Gemfile中編寫一些代碼,該代碼將根據運行“捆綁安裝”的環境選擇正確的分支。
通常,您將Bundler與本地路徑一起使用 。 您的Gemfile使用git
或github
指向Git或Github倉庫:
gem 'spree', github: 'spree/spree', branch: 'master'
請注意,包括分支。 如果需要,可以使每個項目使用不同的gem分支。 如果需要,可以使每個項目使用不同的gem分支。 您還可以根據環境使用組來部署不同版本的gem:
group :development, :test
gem 'spree', github: 'spree/spree', branch: 'bleedinedge'
end
group :staging, :production
gem 'spree', github: 'spree/spree', branch: 'master'
end
只要您繼續推動Github,上面的方法就可以正常工作。 但是由於有了本地配置,您可以在命令行上運行以下命令:
bundle config local.database_modules ~/Projects/gems/spree
這會在~/.bundle/config
添加一行,因此當您在項目中運行bundle
時,它將把它從本地存儲庫中提取出來。
用戶使用不同版本的database_models gem(1.1、1.2、1.3 ...)。 我可能需要自己的gem服務器,對嗎?
我會這樣做,只是讓我的Gemfile通過標簽選擇正確的寶石。 這是一個示例: git 'https://github.com/rails/rails.git', tag: 'v5.0.0'
因此,您可以在將自定義gem存儲在github上的同時執行相同的操作(不需要gem服務器)。
這應該為您提供所需的靈活性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.