什么是 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
-
離線安裝
-
克隆倉庫
git clone https://github.com/rvm/rvm.git
運行
rvm/bin/
路徑下的rvm-installer
-
配置環(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
???? Gem 是 Ruby 中的包阿蝶,其中包含包信息雳锋,以及用于安裝的文件。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ù)器源灸眼。這類似于 Python 的 pip卧檐。
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]