簡體   English   中英

如何管理我的Ruby項目之間的依賴關系?

[英]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個選項,但我不喜歡其中任何一個:

  1. 將database_models部署到服務器,並使用路徑而不是git更新這3個項目以引用database_models

  2. Git子模塊

  3. 用戶使用不同版本的database_models gem(1.1、1.2、1.3 ...)。 我可能需要自己的gem服務器,對嗎?

  4. 在Gemfile中編寫一些代碼,該代碼將根據運行“捆綁安裝”的環境選擇正確的分支。

通常,您將Bundler與本地路徑一起使用 您的Gemfile使用gitgithub指向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服務器)。

這是如何在Git中使用標簽

這應該為您提供所需的靈活性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM