2016-08-25 58 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