更好的iOS项目:rbenv的高级用法

在“更好的iOS项目”系列中,我们介绍了各种工具和环境,这些工具和环境对于更方便,高效地处理iOS项目很有用。

特别提示

对于随后的任何调用,您都不必通过sudo使用root用户权限。 如果您似乎需要,则很可能您之前已经有权限问题,或者您没有正确安装和设置rbenv

rbenv的高级用法

在“更好的iOS项目”系列的上一篇文章“如何使用rbenv管理iOS项目的ruby环境”中,我们学习了如何安装和使用rbenvbundler。 现在我们来看一下使用rbenvbundler的一些更高级的功能和陷阱。

如何在ruby -scripts中使用捆绑程序?

为了确保在ruby脚本内使用正确版本的gem,您需要在脚本顶部要求rubygemsbundler / setup

  #!/ usr / bin / ruby 

#非捆绑包依赖
需要“ optparse”
需要'ostruct'

#支持Bundler和Gems
需要“ ruby​​gems”
需要'捆绑器/设置'

#现在,使用通过Bundler定义的xcodeproj版本
需要'xcodeproj'

使用垃圾桶

为了确保所有调用都使用Gemfile中定义的版本,而不会在调用之前加上bundle exec前缀,可以将--binstubs和gems附加到存根到安装命令:

 捆绑安装--binstubs fastlane 

建议明确命名要存根的宝石,以避免与提供自己存根的宝石发生冲突,例如rails

然后,您可以在bin/之前添加命令,例如

 箱/快车道 

您还可以将export PATH="./bin:$PATH"到Shell的rc文件中(见上文),以在运行命令时始终搜索bin文件夹(binstubs安装到的bin)。 但是,这可能会带来安全隐患。 如果执行此操作,则只需键入

 快车道 

作为binstubs的替代方法,您还可以将别名alias be="bundle exec"到.rc文件中,以使原始调用更短:

 快车道 

奖励:如何自动安装正确的红宝石版本和宝石

在Number42,我们始终在项目中包含一个名为bootstrap.sh的脚本,该脚本会执行随后运行该项目所需的最基本的设置调用。 克隆(或拉出)项目后,只要开箱即用,在大多数情况下,调用sh bootstrap.sh就能解决大部分问题。 对于iOS和Web项目,我们使用相同的方法。 在本系列的下一集中,我们将仔细研究引导脚本。

这是脚本的摘录,它显示了我们如何安装rubyBundlerGems

  #!/ bin / sh 

#错误退出脚本
设置-e

#定义颜色
RED =`tput setaf 1`
GREEN =`tput setaf 2`
NOCOLOR =`输入sgr0`

#保护,仅在必要时更新一次brew
NEEDS_TO_UPDATE_BREW = 1

#帮助程序安装brew依赖项
installDependencyWithBrew(){
如果[$ NEEDS_TO_UPDATE_BREW -eq 1]; 然后
回声“”
回显“ $ {GREEN}更新酒水$ {NOCOLOR}”;

#更新brew以保持依赖关系为最新
酿造更新|| 回声“ $ {RED}无法更新酿造$ {NOCOLOR}”;
NEEDS_TO_UPDATE_BREW = 0
科幻

回声“”
回声“ $ {GREEN}用啤酒$ {NOCOLOR}安装$ 1”;

#安装依赖项(如果未安装)
酿造清单$ 1 || brew install $ 1 || 回声“ $ {RED}未能安装$ 1 $ {NOCOLOR}”;

#升级依赖项(如果已过时)
酿造过时的$ 1 || 酿造升级$ 1 || 回声“ $ {RED}未能升级$ 1 $ {NOCOLOR}”;
}

#如果存在.ruby版本,请安装ruby
如果[-e“ .ruby-version”]; 然后
回声“”
回显“ $ {GREEN}设置红宝石$ {NOCOLOR}”;

installDependencyWithBrew rbenv
installDependencyWithBrew ruby​​-build
#从.ruby-version安装ruby版本,如果已经安装(-s),则跳过
rbenv安装-s
科幻

#如果有Gemfile,请安装gems
如果[-e“ Gemfile”]; 然后
回声“”
回显“ $ {GREEN}安装的宝石$ {NOCOLOR}”;

#安装bundler gem进行ruby依赖管理
gem install bundler --no-document || 回声“ $ {RED}未能安装捆绑器$ {NOCOLOR}”;
捆绑安装|| 回显“ $ {RED}未能安装束$ {NOCOLOR}”;
科幻

词汇表

  • .ruby-version:一个简单的文件,用于定义要在项目中使用的红宝石版本
  • bash:大多数Linux和UNIX系统的默认外壳,请参阅BASH
  • 捆绑软件: ruby依赖管理器
  • 宝石:红宝石依赖
  • Gemfile:定义文件,其中列出了捆绑程序应安装的所有依赖项
  • Gemfile.lock:文件,捆绑程序在其中保存所有依赖项及其依赖项的确切版本,在安装过程中已解决
  • oh-my-zsh:zsh的配置和脚本的集合
  • rbenv:在同一台计算机上管理多个版本的ruby的工具
  • ruby-build:安装ruby版本的工具
  • 红宝石:一种编程语言
  • zsh: Z Shell