...无需卸载最新版本。
我正在使用Bundler 1.10的项目,但是我将Bundler 1.11用于我的所有其他项目。由于这个项目是在1.10,因此每当我运行任何bundle
命令时,由于Bundler 1.11引入的格式不同,我的Gemfile.lock
会发生变化。
我到目前为止找到的唯一解决办法就是运行我的所有命令:
bundle _1.10.6_ [command]
(来自这个答案:https://stackoverflow.com/a/4373478/1612744)
有更好的方法吗?我使用的是rbenv,而不是rvm。
答案 0 :(得分:4)
您可以使用the rbenv-gemset plugin。由于rbenv gemset中较旧版本的gem不会覆盖默认gemset中的较新版本,因此您需要为每个项目安装bundler,这非常麻烦。
cd ~/.rbenv/plugins; git clone git://github.com/jf/rbenv-gemset.git
)或者,如果您使用自制程序,brew install rbenv-gemset
gem uninstall -xI bundler
cd
到项目echo bundler-1.11 > .rbenv-gemsets
(“bundler-1.11”是gemset的名称)gem install bundler
获取当前版本,1.11。* cd
到项目echo bundler-1.10 > .rbenv-gemsets
(“bundler-1.10”是gemset的名称)gem install bundler -v 1.10.6
答案 1 :(得分:3)
我最终用别名和bash函数解决了这个问题。在我的~/.bashrc
中,我添加了这个:
versioned_bundle() {
version_file=${PWD}/.bundle/version
if [[ -r $version_file ]]; then
version=$(<$version_file)
bundle _${version}_ "$@"
else
bundle "$@"
fi
}
alias bundle=versioned_bundle
正如您可以从代码中猜到的那样,我还在项目的version
目录中添加了.bundle/
文件。该文件的内容:
1.10.6
每当我运行bundle
时,我的shell都会检查当前目录中的版本文件,如果找到它,则运行该版本的bundle。
$ cd project-with-old-bundle-version
$ bundle --version
1.10.6
$ cd anywhere-else
$ bundle --version
1.11.2