Ruby统一环境

rbenv

在iOS开发中我们在后期会用到CocoaPods、Fastlane 等第三方 Ruby 工具,为了自动化安装和管理这些工具,整个项目团队所使用的 Ruby 版本也必须保持一致。为此,我们就需要用到 Ruby 环境管理工具。

目前流行的 Ruby 环境管理工具有 RVM 和 rbenv。
我们用的是 rbenv,因为它使用 shims 文件夹来分离各个 Ruby 版本,相对于 RVM 更加轻装而方便使用。
千万注意,团队内部不要同时使用不同的 Ruby 环境管理工具,否则项目编译会出错。

rbenv 是 Ruby 环境管理工具,能够安装、管理、隔离以及在多个 Ruby 版本之间切换。要使用 rbenv,我们可以通过 Homebrew 来安装它,下面是安装 rbenv 的脚本

brew install rbenv ruby-build rbenv-vars

一旦安装 rbenv 完毕,我们需要把以下的设置信息放到你的 Shell 配置文件里面,例如 ~/.bash_profile 或者 ~/.zshrc 等文件,这样能保证每次打开终端的时候都会初始化 rbenv

export PATH="$HOME/.rbenv/bin:$PATH" 
eval "$(rbenv init -)"

安装和设置项目的 Ruby 环境

$ cd $(PROJECT_DIR)
$ rbenv install 2.7.2
$ rbenv local 2.7.2

此处是把项目的 Ruby 环境配置为 2.7.2 版本。rbenv 会帮我们建立 一个叫作.ruby-version 的文件,该文件里面只保存一个版本号(例如2.7.2)的字符串。这个包含了版本号的文件可以用 Git 进行管理。如果要更新版本,可以通过rbenv local命令进行,每次更新也由 Git 统一管理,这样就能让其他开发者使用同一版本的 Ruby 开发环境了。

RubyGems 和 Bundler

RubyGems 和 Bundler 主要是用来安装和管理 CocoaPods 和 fastlane 等第三方工具。

RubyGems和Bundler这里有点绕,个人理解,RubyGems主要用来管理系统级别(全局的)gem依赖包,例如bundler这种;而Bundler则是用于管理不同项目下不同版本的gem依赖包,例如,项目A下使用的cocoapods版本是1.10.0, 项目B下使用的cocoapods 1.11.0 这种情况。

具体来说,RubyGems 是 Ruby 依赖包管理工具。在 Ruby 的世界,包叫作 Gem,我们可以通过gem install命令来安装。但是 RubyGems 在管理 Gem 版本的时候有些缺陷,就有人开发了 Bundler,用它来检查和安装 Gem 的特定版本,以此为 Ruby 项目提供一致性的环境。

要安装 Bundler,我们可执行gem install bundler命令进行,之后,再执行bundle init就可以生成一个 Gemfile 文件,像 CocoaPods 和 fastlane 等依赖包,我们就可以添加到这个文件里面。

source "https://rubygems.org"
gem "cocoapods", "1.10.0"
gem "fastlane", "2.177.0"

注意我们在gem命令里面都指定了依赖包的特定版本号。例如,在我们的 App 就使用了1.10.0版的 CocoaPods,然后执行bundle install来安装各个 Gem。 Bundler 会自动生成一个 Gemfile.lock 文件来锁定所安装的 Gem 的版本

DEPENDENCIES
  cocoapods (= 1.10.0)
  fastlane (= 2.177.0)

为了保证团队其他成员都可以使用版本号一致的 Gem,我们需要把 Gemfile 和 Gemfile.lock 一同保存到 Git 里面统一管理起来。

到此为止,我们已经知道怎样使用 Ruby 工具链配置一个统一的开发环境。但在真实的开发环境中,搭建环境只需要一个人来完成即可,其他成员执行以下脚本就能完成整套开发环境的搭建。

$ ./scripts/setup.sh

我们一起看看这个脚本做了些什么?

# Install ruby using rbenv
ruby_version=`cat .ruby-version`
if [[ ! -d "$HOME/.rbenv/versions/$ruby_version" ]]; then
  rbenv install $ruby_version;
fi
# Install bunlder
gem install bundler
# Install all gems
bundle install
# Install all pods
bundle exec pod install

该脚本主要做了四件事情,第一步是在 rbenv 下安装特定版本的 Ruby 开发环境,然后通过 RubyGems 安装 Bunlder,接着使用 Bundler 安装 CocoaPods 和 fastlane 等依赖包,最后安装各个 Pod。这样,一个统一的项目环境就搭建完成了,接下来开发者就可以打开 App.xcworkspace进行开发了。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值