認(rèn)識 Ruby 與 Gem

什么是 Ruby

Ruby

????Ruby 是一種面向?qū)ο蟆⒅噶钍健⒑瘮?shù)式、動態(tài)的通用編程語言玉工。Mac 內(nèi)部默認(rèn)是有 Ruby 的,其路徑可以通過 which ruby獲取淘菩,默認(rèn)為/usr/bin/ruby遵班,可以通過 ruby -v 命令查看當(dāng)前的版本。

RVM

????有些時候系統(tǒng)默認(rèn)的 Ruby 版本滿足不了我們的需求潮改,就會使用到 RVM狭郑。RVM,全名 Ruby Version Manager汇在,是一個命令行工具翰萨,可安裝、管理和使用多個 Ruby 環(huán)境糕殉。

RVM 安裝方式

rvm 有兩種安裝方式

  • 官網(wǎng)腳本安裝

      \curl -sSL https://get.rvm.io | bash -s
    

    ????rvm 會安裝到當(dāng)前用戶目錄下也就是 ~/亩鬼,路徑為 ~/.rvm,安裝后需要運行 source ~/.rvm/scripts/rvm

  • 離線安裝

    1. 克隆倉庫

      git clone https://github.com/rvm/rvm.git
      
    2. 運行 rvm/bin/ 路徑下的 rvm-installer

    3. 配置環(huán)境變量

      export PATH="$HOME/.rvm/bin:$PATH"
      

RVM 的使用

  • 安裝指定版本的 Ruby (需要先安裝 Homebrew)

     #安裝后路徑為 ~/.rvm/rubies/ruby-x.x.x
     rvm install 2.7
    
  • 指定 Ruby 的默認(rèn)版本

    rvm use 2.7 --default
    

RVM 的移除

rvm implode

Gem

???? GemRuby 中的包阿蝶,其中包含包信息雳锋,以及用于安裝的文件。Gem 通常是依照 .gemspec 文件構(gòu)建的羡洁,其為 YAML 文件玷过。然而,Ruby 代碼也可以直接創(chuàng)建 Gem,這種情況下通常利用Rake 來進(jìn)行辛蚊。

.gemspec

????.gemspec 文件其中包含 Gem 有關(guān)的信息粤蝎,例如版本號、作者袋马、聯(lián)系郵件以及依賴等诽里,例如 cocoapods.gemspec 文件如下:

# encoding: UTF-8
require File.expand_path('../lib/cocoapods/gem_version', __FILE__)
require 'date'

Gem::Specification.new do |s|
  s.name     = "cocoapods"
  s.version  = Pod::VERSION
  s.date     = Date.today
  s.license  = "MIT"
  s.email    = ["eloy.de.enige@gmail.com", "fabiopelosin@gmail.com", "kyle@fuller.li", "segiddins@segiddins.me"]
  s.homepage = "https://github.com/CocoaPods/CocoaPods"
  s.authors  = ["Eloy Duran", "Fabio Pelosin", "Kyle Fuller", "Samuel Giddins"]

  s.summary     = "The Cocoa library package manager."
  s.description = "CocoaPods manages library dependencies for your Xcode project.\n\n"     \
                  "You specify the dependencies for your project in one easy text file. "  \
                  "CocoaPods resolves dependencies between libraries, fetches source "     \
                  "code for the dependencies, and creates and maintains an Xcode "         \
                  "workspace to build your project.\n\n"                                   \
                  "Ultimately, the goal is to improve discoverability of, and engagement " \
                  "in, third party open-source libraries, by creating a more centralized " \
                  "ecosystem."

  s.files = Dir["lib/**/*.rb"] + %w{ bin/pod bin/sandbox-pod README.md LICENSE CHANGELOG.md }

  s.executables   = %w{ pod sandbox-pod }
  s.require_paths = %w{ lib }

  # Link with the version of CocoaPods-Core
  s.add_runtime_dependency 'cocoapods-core',        "= #{Pod::VERSION}"

  s.add_runtime_dependency 'claide',                '>= 1.0.2', '< 2.0'
  s.add_runtime_dependency 'cocoapods-deintegrate', '>= 1.0.3', '< 2.0'
  s.add_runtime_dependency 'cocoapods-downloader',  '>= 1.6.0', '< 2.0'
  s.add_runtime_dependency 'cocoapods-plugins',     '>= 1.0.0', '< 2.0'
  s.add_runtime_dependency 'cocoapods-search',      '>= 1.0.0', '< 2.0'
  s.add_runtime_dependency 'cocoapods-trunk',       '>= 1.6.0', '< 2.0'
  s.add_runtime_dependency 'cocoapods-try',         '>= 1.1.0', '< 2.0'
  s.add_runtime_dependency 'molinillo',             '~> 0.8.0'
  s.add_runtime_dependency 'xcodeproj',             '>= 1.21.0', '< 2.0'

  s.add_runtime_dependency 'colored2',       '~> 3.1'
  s.add_runtime_dependency 'escape',        '~> 0.0.4'
  s.add_runtime_dependency 'fourflusher',   '>= 2.3.0', '< 3.0'
  s.add_runtime_dependency 'gh_inspector',  '~> 1.0'
  s.add_runtime_dependency 'nap',           '~> 1.0'
  s.add_runtime_dependency 'ruby-macho',    '>= 2.3.0', '< 3.0'

  s.add_runtime_dependency 'addressable', '~> 2.8'

  s.add_development_dependency 'bacon', '~> 1.1'
  s.add_development_dependency 'bundler', '~> 2.0'
  s.add_development_dependency 'rake', '~> 12.3'

  s.required_ruby_version = '>= 2.6'

什么是 RubyGems

????RubyGems 是 Ruby 的一個包管理器源,提供了分發(fā) Ruby 程序和庫的標(biāo)準(zhǔn)格式 gem飞蛹,旨在方便地管理 gem 安裝的工具,以及用于分發(fā) gem服務(wù)器源灸眼。這類似于 Pythonpip卧檐。

Gem 包的安裝和卸載

gem 命令文檔

  • 使用系統(tǒng) Ruby 環(huán)境,一般需要管理員權(quán)限焰宣,會默認(rèn)安裝到 /Library/Ruby/Gems/x.x.x

    sudo gem install  xxx
    
  • 使用 rvm ruby 環(huán)境霉囚,默認(rèn)會安裝在 ~/.rvm/gems/ruby-2.6.8

    gem install xxx
    
  • 使用 --user-install ,默認(rèn)會安裝在 ~/.gem/ruby 下匕积,需要提前配置環(huán)境變量

    PATH="`ruby -e 'puts Gem.user_dir'`/bin:$PATH"
    gem install xxx --user-install
    
  • 查看已經(jīng)安裝的依賴包

    gem list
    
  • 卸載依賴包

     gem uninstall xxx
    

GEM_HOME & GEM_PATH

????一般地盈罐,可以通過 gem env 查看 gem 的位置 GEM_HOME 和其執(zhí)行路徑 GEM_PATH,除了上述外可以通過覆寫 GEM_HOME & GEM_PATH 從而不需要管理員權(quán)限(sudo)闪唆。

export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$PATH

GEM 源

????gem 命令行的默認(rèn)源是 RubyGems盅粪,也就是 https://rubygems.org/,以下是對源的操作

#查看源
gem source -l 
#鏡像源
gem source -a https://gems.ruby-china.com/  
#移除源
gem source --remove https://rubygems.org/

Bundler

Bundler 能夠跟蹤并安裝所需的特定版本的 gem悄蕾,以此來為 Ruby 項目提供一致的運行環(huán)境票顾。定義一個 Gemfile,說明想要包含哪些庫帆调,并且可以選擇指定版本或范圍奠骄。 運行bundle install,它會生成一個 Gemfile.lock番刊,說明所有庫的確切版本含鳞,然后bundle install使用該項目運行的任何其他人都會獲得完全相同的版本。

安裝

gem install bundler

使用

在項目根目錄下新建 Gemfile 文件并指定所需的依賴:

source 'https://gems.ruby-china.com/'
gem 'fastlane'

配置后使用 bundle install 安裝

執(zhí)行

bundle exec pod [command]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芹务,一起剝皮案震驚了整個濱河市蝉绷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锄禽,老刑警劉巖潜必,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沃但,居然都是意外死亡磁滚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垂攘,“玉大人维雇,你說我怎么就攤上這事∩顾” “怎么了吱型?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長陨仅。 經(jīng)常有香客問我津滞,道長,這世上最難降的妖魔是什么灼伤? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任触徐,我火速辦了婚禮,結(jié)果婚禮上狐赡,老公的妹妹穿的比我還像新娘撞鹉。我一直安慰自己,他們只是感情好颖侄,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布鸟雏。 她就那樣靜靜地躺著,像睡著了一般览祖。 火紅的嫁衣襯著肌膚如雪孝鹊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天展蒂,我揣著相機與錄音惶室,去河邊找鬼。 笑死玄货,一個胖子當(dāng)著我的面吹牛皇钞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播松捉,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼夹界,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了隘世?” 一聲冷哼從身側(cè)響起可柿,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丙者,沒想到半個月后复斥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡械媒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年目锭,在試婚紗的時候發(fā)現(xiàn)自己被綠了评汰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡痢虹,死狀恐怖被去,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奖唯,我是刑警寧澤惨缆,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站丰捷,受9級特大地震影響坯墨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜病往,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一畅蹂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荣恐,春花似錦、人聲如沸累贤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臼膏。三九已至硼被,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渗磅,已是汗流浹背嚷硫。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留始鱼,地道東北人仔掸。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像医清,于是被迫代替她去往敵國和親起暮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容