...没有卸载最新版本。
我正在开发一个使用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。
您可以使用rbenv-gemset插件 。 由于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
我最后用别名和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
您可以从代码中猜到,我还在项目的.bundle/
目录中添加了一个version
文件。 该文件的内容:
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