我刚刚从 的多年开发中切换过来RVM 至 rbenv rbenv 有一个方面我似乎无法理解:
当我在同一版本的 Ruby 下处理多个项目(每个项目都有自己的依赖项),然后停止处理其中一个项目时,如何从我的 gempath
轻松升级其所有依赖项(显然是 /Users/meltemi/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0
)?
使用 RVM,每个项目都有一个 gemset
所以很容易删除它。
使用rbenv,每个gem 的每个版本似乎都进入bundler
所在的同一目录中。可以管理它。伟大的!但是说我经历了一个 bundle outdated
和 bundle update
然后 bundle clean
在 ProjectA 中循环,这不会删除我当天晚些时候可能需要处理的 ProjectB 中无法识别的所有 gem 吗?
或者说我不再想在 ProjectA 上工作并想删除该项目以及与之相关的所有 gem?
也许我以错误的方式接近这个?!?希望有人能让我直截了当,因为关于 rbenv 的其他一切看起来都很简单而且很有意义!
最佳答案
我不确定 bundle clean
的机制,但听起来它确实引入了删除与其他项目相关的 gem 的可能性。
您有几个选择:
1. 您可以让所有 gem 版本都存在于 ~/.rbenv/...
只需让 Bundler 为您管理所有这些。旧的/陈旧的 gem 将存在。 (我目前这样做。)
2. 您可以使用像 rbenv-gemset 这样的插件为了更多的隔离。 (或切换回 RVM。)
3. Bundler 还允许您指定安装 gem 的路径,您可以将它们安装在项目目录中(例如:/myapp/vendor/)。
# 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
可能有其他方法来解决这个问题,但这些都是我熟悉的方法。
关于ruby-on-rails - 使用 rbenv 和多个项目随着时间的推移维护 gems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39135565/