安裝使用bundle時(shí)遇到的坑之基礎(chǔ)知識(shí)介紹篇

場(chǎng)景描述

  • 直接使用了本機(jī)上的ruby,并且安裝了gem和bundler,打開(kāi)項(xiàng)目,使用bundle install想著安裝一些Gem(一些依賴(lài)包)卻發(fā)現(xiàn)不停的讓我使用sudo,感覺(jué)這樣不對(duì)。
  • 然后放棄了本機(jī)上的ruby改用rbenv安裝新的ruby,但是使用沒(méi)有辦法修改which ruby時(shí)候指向的/usr/local/bin/ruby
  • 不論使用的bundler還是Gemfile都使用的/usr/local/bin中的

RubyGems

  • 是什么: Ruby程序包管理器,等同于mac上的brew或者gradle。

  • 作用:管理所有使用ruby封裝的程序和代碼,簡(jiǎn)單的說(shuō)是管理Gem包

    • Gem : Gem是封裝起來(lái)的Ruby應(yīng)用程序或代碼庫(kù)(等同于npm中的一個(gè)依賴(lài)),但是每一個(gè)Gem都是用ruby編寫(xiě)的
    • 管理的內(nèi)容:構(gòu)建、上傳、下載以及安裝Gem包
  • 如何使用:ruby下載的時(shí)候就會(huì)自動(dòng)下載RubyGems,所有的RubyGems命令都是通過(guò)gem實(shí)現(xiàn)的

    • gem list --local: 列出已安裝的gem
    • gem list --remote: 列出可用的gem
    • gem install **: 安裝某個(gè)gem
    • gem uninstall **: 卸載某gem

bundler

  • 幫助你指定你的項(xiàng)目需要使用哪些 gem(Gemfile),還有可選地指定哪個(gè)版本被需要

  • 當(dāng)聲明恰當(dāng)時(shí),Bundler 會(huì)安裝所有依賴(lài)的 gem (包括整個(gè)依賴(lài)樹(shù)),后期檢查之后還會(huì)打印出 log(bundle install)

  • Bundler 默認(rèn)是安裝 gem 到一個(gè)共享的路徑,不過(guò)也可以指定直接安裝到你的應(yīng)用

    • 注意:在項(xiàng)目中可以創(chuàng)建一個(gè).bundle目錄下面可以創(chuàng)建一個(gè)config文件,文件中可以定義gems安裝的位置
      • 當(dāng)你使用sudo bundle install就會(huì)默認(rèn)的在項(xiàng)目目錄下創(chuàng)建這個(gè)config并將gem存放在項(xiàng)目的vendor目錄下,因此千萬(wàn)不要使用sudo bundle install
  • 在應(yīng)用中,安裝的可執(zhí)行g(shù)em需要以 bundle exec gemName命令運(yùn)行只有這樣才是真正使用bundle安裝的gem

gem install 和 bundle install的區(qū)別

gem install

  • 使用RubyGems安裝gem
  • 安裝完之后會(huì)將gem存放在$HOME/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems
    • 這個(gè)目錄下的gems目錄中主要存放的是解壓之后的gem,當(dāng)安裝過(guò)程中遇到問(wèn)題時(shí),可以進(jìn)入這些目錄,把有問(wèn)題的gem刪掉,重新 gem install 即可
    • 這個(gè)目錄下的cache下放置下載的原生gem包

bundle install

  • bundle install 默認(rèn)情況下也是將所需要的gem安裝到這個(gè)位置
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容