2016-08-25 55 views
0

我剛剛從多年的發展RVM切換與rbenv並有rbenv的一個方面,我似乎無法繞到我的頭:保持隨着時間的推移rbenv與多個項目中的寶石

當我在同一版本的Ruby下處理多個項目(每個都有自己的依賴關係),然後停止在其中一個項目上工作時,如何輕鬆升級我的gempath(顯然是/Users/meltemi/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0)的所有依賴項?

隨着RVM的每個項目有一個gemset所以很容易刪除它。

隨着rbenv,每個寶石的每個版本都會出現在bundler可以管理它的同一個目錄中。大!但是,假設我在ProjectA中通過bundle outdatedbundle update然後bundle clean循環,是不是會刪除ProjectB中無法識別的所有寶石,我可能需要在當天晚些時候進行工作?

或者說我不再想要在ProjectA上工作,並且想要刪除項目以及與其關聯的所有寶石?

也許我正在接近這個錯誤的方式嗎?!?希望有人可以讓我直接,因爲一切有關rbenv似乎很簡單&很有意義!

回答

0

我不確定bundle clean的機制,但它聽起來像它引入了刪除與其他項目關聯的寶石的可能性。

您有幾種選擇:

你可以讓所有的寶石版本住在~/.rbenv/...,只是讓捆紮機管理所有你。舊的/陳舊的寶石將存在。 (我目前做到這一點。)

2.您可以使用像rbenv-gemset插件更多的隔離。 (或切換回RVM)

捆紮機還允許您指定在哪裏安裝寶石的路徑,你可以安裝他們的項目目錄內(例如:/ MYAPP /供應商/)

# Per project 
bundle config --local path vendor 
bundle install 
# Saves configuration to /myapp/.bundle/config 

# Global 
bundle config --global path vendor 
bundle install 
# Saves configuration to ~/.bundle/config 

可能有其他方法可以解決這個問題,但這些都是我熟悉的所有方法。

+0

我想我對#1的擔心是,隨着時間的推移'〜/ .rbenv/...'會變成一堆過時的寶石。但是我猜想,因爲仍然活躍的項目最終會被遷移到Ruby的新版本,它們的捆綁包也會移動,所以一旦所有(或足夠)的項目從舊版本的Ruby中移出,所有這些寶石都可能被銷燬......這種理智嗎?不是很多開發者*我*使用'/ vendor',儘管如果你將它添加到'.gitignore',那麼它可以工作。 – Meltemi