因为很多Rails项目会限制 ruby 和 gem bundle 的版本, 在系统中存在多个 ruby 版本时, rvm环境下执行 bundle install 命令会产生很多因为 C API 和 gem bundle 不兼容导致的安装失败的问题, 比如 Rails 项目需要 ruby-2.3.7 的版本, rvm 则会返回 2.5.1 版本的 gem 路径.
为了避免ruby多版本带来的问题, 从 rvm 切换到 rbenv, 以下是切换步骤:
1. 清理 rvm
$ rvm implode
$ sudo rm -rf ~/.rvm
然后把 .bashrc/.zshrc 里面的 rvm PATH 都删除了
2. 安装 rbenv
$ brew doctor
$ brew update
$ brew install rbenv
$ brew install ruby-build
3. 设置 rbenv 的PATH环境变量
把下面代码加入你的 .bashrc 或者 .zshrc 中, 重启终端
export PATH="/Users/andy/.rbenv/shims:$PATH"
eval "$(rbenv init -)"
注意 /Users/andy/.rbenv/shims 换成你用户目录下的 rbenv bin 路径.
最开始写的是 /Users/andy/.rbenv/bin , 最后发现 rbenv 装在 Mac 上以后, bin 目录居然叫 shims 而不是 bin, 坑死我啦.
4. 使用中国镜像源
用下面命令来使用 ruby-china.com 作为更新源, 加快 gem 安装速度:
git clone https://github.com/andorchen/rbenv-china-mirror.git "$(rbenv root)"/plugins/rbenv-china-mirror
5. 安装 ruby
我的开发环境用的是 2.3.7 版本, 你可以安装你喜欢的ruby版本:
rbenv install -l
rbenv install 2.3.7
rbenv global 2.3.7
6. 安装 bundler
echo "gem: --no-document" > ~/.gemrc
gem install bundler
7. 确认安装目录
安装完成后 gem 和 bundle 的路径一定要确认一下, 要不会发生 gem 安装在用户目录成功, bundle 却调用的是系统目录下的 gem 路径.
使用 gem env home
来确认 gem 安装目录, 一般都是在 ~/.rbenv 下, 我的输出为:
/Users/andy/.rbenv/versions/2.3.7/lib/ruby/gems/2.3.0
使用 which bundle
确认 bundle 文件的路径, 我的输出为 /Users/andy/.rbenv/shims/gem
网友评论