ruby,rvm,gem,bundler區(qū)別
ruby 是什么淆两?
ruby 不用多說断箫,是一門語言,Mac系統(tǒng)自帶ruby環(huán)境琼腔,安裝在
/usr/bin/ruby # which ruby
rvm 是什么瑰枫?
有了系統(tǒng)自帶的ruby,我們可以使用,但是有時候我們可能想使用不同的版本丹莲,去修改系統(tǒng)版本很可能造成一些問題光坝。
因此 rvm 是專門用來管理 ruby版本
# 安裝 rvm,不能翻墻請指定ruby源
\curl -sSL https://get.rvm.io | bash -s stable
# 安裝指定版本的ruby 2.6.3
rvm install 2.6.3
# 指定ruby默認版本
rvm use 2.6.3 --default
# 更多可以用rvm help
最后可以撩一眼甥材,ruby被裝到哪里去了,可以看到,已經不是root目錄了
gem 是什么鸳惯?
多版本的ruby 包也配置好了叠萍,如果我們需要一些第三方的依賴包苛谷,怎么辦?
gem負責管理依賴包
比如我們需要Cocoapods独悴,需要fastlane刻炒,他們都是ruby語言寫成的自沧;gem工具 就是負責管理這些的拇厢,類似Python的pip
# 使用系統(tǒng)ruby環(huán)境
sudo gem install -n /usr/local/bin xxx
# 使用rvm ruby環(huán)境
gem install xxx
# 查看已經安裝的依賴包
gem list
最后撩一眼旺嬉,如果系統(tǒng)ruby厨埋,gem會默認安裝到這里
如果ruby是非系統(tǒng)的,gem默認安裝到其它地方
bundler 是什么迅涮?
ruby的依賴包徽龟,工具也可以安裝了;這個時候似乎版本的問題又出現了传透,我們想要針對不同的依賴指定不同的版本
比如A項目需要依賴Cocopods 1.4.0; rake 10.2.1
B項目需要依賴Cocoapods 1.5.3; rake 10.3.5
那么如何解決呢极颓?
Bundler解決了這個問題
# 項目中Gemfile指定了需要的版本依賴
bundle install --path=`pwd`
# 具體命令前加 bundle exec command_xxx
bundle exec xxx
可以看下這個奇妙的過程后面是什么樣
bundle install --path=$(pwd)
這條命令執(zhí)行完后菠隆,目錄下會多兩個文件夾 .bundle, ruby
先看看ruby 文件夾
如果曾經觀察過系統(tǒng)的ruby安裝目錄躯肌,會發(fā)現一模一樣破衔,沒錯运敢。
這條命令在工程目錄里安裝了所有ruby的環(huán)境传惠,并且指定了Gemfile里面需要的版本
那工程下使用時候卦方,如何找到 bundle 安裝的環(huán)境呢?
看看 .bundle文件夾
沒錯里面config完全指定了相對的ruby環(huán)境路徑
所有 bundle exec xxx
就知道去哪里找了
后記
具體的用法尘吗,我們可以通過 help命令查看浇坐,這個非常有用睬捶,有時候,網上資料因為每個人環(huán)境的不同擒贸,導致命令有所變化臀晃。
仔細想想介劫,其實這一套都是為了針對一個具體工程徽惋,而進行的環(huán)境配置,彼此獨立隔離而又正確险绘。