2016-08-22 47 views
0

我的套件中的Rails 4.2應用程序和寶石目前正在升級到Rails 5.有沒有辦法維護2個獨立的Gemfiles和Gemfiles - 一個用於Rails 4.2,另一個用於Rails 5,並且將其推向git,所以多人可以在Rails 4.2和Rails 5的應用程序中工作?如何爲移動到Rails 5的項目維護2個Rails版本?

+0

通過「in the Rails 4.2 and Rails 5」,你的意思是任何一個人可以同時在兩個?我不知道這件事,對不起。但是,如果你只是說有些人在Rails 4.2版本和Rails 5版本中工作,我會建議使用git分支。 – jaydel

+0

[本博客文章](http://bytes.babbel.com/en/articles/2015-12-14-rails-4-upgrade.html)中介紹的方法對我們非常有用。 – spickermann

回答

1

通常的答案是分支。我在這裏假設你有一套正在開發和升級的寶石,以及一個或多個依賴這些寶石的「主要項目」,也都在積極開發和升級。

因此,對於寶石,在開發你的rails 5版本時,你可能有一個分支master和一個分支rails-4。師父,正在流血,得到升級。新的功能開發可以在rails-4中完成,並定期合併到master中。

然後,在你的主要項目中,你也這樣做。您在創建新的分支之前,你可以在你的主要項目Gemfiles指定他們應該使用一個特定的分支,例如:

gem 'mygem', :git => 'https://github.com/my/gem.git', :branch => 'rails-4' 

然後,你的主要項目,可以建立自己的軌道,4支。在master上,您重新編輯您的Gemfile以將其返回指向主。

同樣,新功能開發可以在rails-4分支中繼續,並且可以合併到master中,直到master準備好生產。一旦你發佈了rails 5版本並且每個人都很開心,rails-4分支可以被刪除。


[編輯]:如果出於某種原因,你反對的Git分支,我已經看到了庫作家加入了「gemfiles /」文件夾到他們的項目增多的趨勢。

我的建議是使用項目中所有不同版本的Gemfiles填充該文件夾,然後使用git rm Gemfile從根目錄中刪除Gemfile。另外,將行/Gemfile/Gemfile.lock添加到.gitignore。提交此更改。

然後,當一個新的開發者檢查你的回購,他們需要鏈接到他們希望使用的Gemfile。鏈接到他們想要的文件後,例如ln -s gemfiles/Gemfile-rails-4 Gemfile他們應該可以運行bundle install

我應該注意到,我從來沒有這樣做過 - 但這將是一般策略。在一般情況下,仍然會推薦使用分支 - 這樣,您可以避免使用代碼中的條件,並避免升級過程中殘留的「殘餘」。

+0

我想盡量不保留單獨的分支 - 但是不同的Gemfiles集合/或使用RVM – absessive