因為很多Rails項目會限制 ruby 和 gem bundle 的版本, 在系統(tǒng)中存在多個 ruby 版本時, rvm環(huán)境下執(zhí)行 bundle install 命令會產(chǎn)生很多因為 C API 和 gem bundle 不兼容導(dǎo)致的安裝失敗的問題, 比如 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. 設(shè)置 rbenv 的PATH環(huán)境變量
把下面代碼加入你的 .bashrc 或者 .zshrc 中, 重啟終端
export PATH="/Users/andy/.rbenv/shims:$PATH"
eval "$(rbenv init -)"
注意 /Users/andy/.rbenv/shims 換成你用戶目錄下的 rbenv bin 路徑.
最開始寫的是 /Users/andy/.rbenv/bin , 最后發(fā)現(xiàn) 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
我的開發(fā)環(huán)境用的是 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 的路徑一定要確認一下, 要不會發(fā)生 gem 安裝在用戶目錄成功, bundle 卻調(diào)用的是系統(tǒng)目錄下的 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