2016-06-13 40 views
0

鑑於我們使用ruby版本管理器(RVM或Rbenv)的首選風格,每個ruby版本都會隔離ruby gem。如何正確隔離開發中的多個rails應用程序(本地機器)

  1. 比方說,我們要在多個應用程序的本地工作(他們是完全獨立的應用程序),我們要使用相同的紅寶石版本和相同的軌道版本,我們如何正確地隔離他們和他們的寶石? gemset是(唯一的)答案嗎?我的意思是,如果我有5個具有相同ruby版本的應用程序,並且我在所有5個方面都不斷添加寶石,那麼其中一個應用程序可以與最新的穩定版本兼容,而其中一個應用程序仍然需要滾動由於遺留依賴性或不相關的原因,舊版本的同一個gem。你們如何避免這個時間炸彈?

  2. 如果我們想在多個應用上使用相同的ruby版本,但使用不同的Rails版本,該怎麼辦? 「只是一顆寶石」的軌道是與上述相同的答案嗎?

謝謝。

+2

這正是Bundler解決的問題。當你執行'bundle exec '時,它將使用'Gemfile.lock'中指定的gem版本。這意味着您可以擁有任意數量的任何特定gem版本,但是在啓動應用程序時,它會爲每個應用程序選擇正確的版本。 –

+0

謝謝@JonCairns。因此,只要一個以上的本地應用程序共享一個精確的ruby版本,並且我想避免混淆,沮喪和破碎的心靈,我應該**總是**將'bundle exec'預先添加到** all **我的命令中?這是我一直都沒有做過的事情,所以我想我只是很幸運,迄今爲止沒有發生'無法解釋'的衝突...... – zbiber

+0

這是完全正確的,是的,有時你可以離開而不做 - 幸運的, 正如你所說! –

回答

1

我建議使用:

  • rbenv處理在同一臺機器
  • bundler多個Ruby版本定義每個應用程序的依賴性

確保推.ruby_versionGemfileGemfile.lock以確保每個使用每個寶石的適當版本...

相關問題