我已经从 rvm 切换到 asdf,需要类似于 rvm 中的宝石集的行为。我有两个文件夹,其中包含同一项目 - 一个包含旧版本,另一个包含最新版本。它们具有相同的红宝石版本,但某些宝石的版本不同。在 asdf 中是否可以在例如 ruby 2.6 上运行并在两个项目上运行捆绑而不用担心冲突?
请记住,Gemfile
和Gemfile.lock
应该可以安装同一 gem 的多个版本,并且将根据描述的任何约束选择正确的版本。
您唯一需要强制使用单个版本的情况是在处理命令行工具时(例如rails
或rake
(,在任何给定时间只能有一个处于活动状态。
宝石镶嵌是 Bundler 和Gemfile
之前的一段时间的副产品。
我刚刚遇到了同样的问题。我通过在 Gemfile.lock 中添加以下行来解决这个问题。但请注意,有时需要在 BUNDLED WITH 部分之前添加两个空行(没有任何空格(。
GEM
remote: https://rubygems.org/
specs:
BUNDLED WITH
1.17.3
将其添加到 Gemfile.lock 后,您从 rails 项目文件夹中 cd,然后重新 cd,您可以检查捆绑器版本是否已被 asdf 更改。
希望这有帮助。