前言
RVM是一个命令行工具,它允许您轻松地安装、管理和处理多个ruby环境,从解释器到gem集。
这是RubyChina镜像站点http://gems.ruby-china.org/(淘宝gems站点的镜像已重定向到这里)所描述的方法。
Gem简介
Rubyems:简称gems是一个用于对rails组建近些年个打包的ruby打包系统,
它提供了一个分发ruby程序喝库的标准格式,
还提供了一个管理程序包的工具。
Rubyems的功能类似于linux下的apt-get,
是个包管理器,可以从远程下载所需的包。
什么是gem:你可以这样理解,
gem是一系列文件和包的总称,
是一些rails项目依赖的软件或者环境,
或者是依赖的关系库,当你的项目中缺少的时候,
你可以用gem install 来进行安装,
这种安装是通过RubyGems这个包管理工具来安装的,
当然你也可以通过bundleer来安装。说到这两种安装方法,
区别在于:
gem install xxx.gem是通过Rubyems工具来进行安装的,
将所需要的gem都安装到/usr/local/ruby/lib/ruby/gems/1.8(你的ruby的安装目录)。
这其中包括了Cache、doc、gems、specifications 4个目录,cache下放置下载的原生gem包,gems下则放置的是解压过的gem包。当安装过程中遇到问题时,可以进入这些目录,把有问题的gem删掉,重新 gem install 即可
bundle install 默认情况下也是将所需要的gem安装到这个位置,但是在一些情况,可能你当前的用户权限对那个目录没有可写权限,这个时候bundler将会在一个临时目录里来升级所需的一切gem,然后管你要sudo的密码,这样的话,才有权限copy这些gems到系统的目录去。其实你应该永远也不要用sudo bundle install,因为在bundle install的时候,有些步骤是必须要用你现在的用户角色来进行的。
Rails 3中如果需要 require 某个 gem 必须通过 Gemfile 来管理。
Gemfile.lock 则用来记录本机目前所有依赖的 RubyGems 和其版本,所以强烈建议将该文件放入版本控制器,从而保证大家基于同一环境下工作。
bundle install:安装你在项目的Gemfile文件中指定的项目依赖库
描述:用来安装你在Gemfile中制定的,该项目所要用到的依赖的gem。
如果你第一次运行bundle install,
并且这个Gemfile.lock不存在,
bundler将会在远程的源上去抓取这些依赖的库,
去解析依赖关系,并且安装所有你在Gemfile中指定的gem。
如果Gemfile.lock文件已经存在了,
并且你还没有更改你的Gemfile文件,
bundler将会所有的远程资源,
但是是根据Gemfile.lock中制定的gem来解析依赖关系。
如果Gemfile.lock文件已经存在了,
并且你已经更改了Gemfile文件,
bundler将会用Gemfile.lock中,
你没有更改之前的gem来解析依赖关系,
并且将会利用你更改过的gem来重新解析这些依赖。
如果gems有新版本,Gemfile.lock如何同步更新:
bundle update,
这样bundle会去检查 http://rubygems.org/ 上 gem的最新版本,如果本地旧的话,会去更新到最近版本。
然后同步更新Gemfile.lock
在Linux下不要使用 sudo bundle install/update,
这样会在.bundle目录下查找bundle install path 的配置,
找到后安装到该目录,而非系统指定的目录,不方便管理。
这就是说,通过sudo bundle install 安装的gem会在你当前的家目录的.bundle下
在我们想要发布自己的pod文件时,需要通过```Pod Lib Create```指令去创建`pod`,然后添加文件,测试后发布.
这次我们来探究下```Pod Lib Create```到底是如何实现的,该指令帮我们做了什么呢?
###pod lib create
通过`pod lib create`创建一个`pod`,分析创建流程
当执行`pod lib create ProjectName`时,其实是下载了一个`pod`模板,然后在内部通过更改`.podspec`文件的配置定制化自己的`pod`,
`pod lib create ProjectName`其实使用了默认参数,补全的话`pod lib create ProjectName --template-url`=https://github.com/CocoaPods/pod-template.git,
执行:
分析
Cloning `https://github.com/CocoaPods/pod-template.git into ProjectName.`
创建一个和指定的项目名相同的文件夹,然后将`pod-template`克隆下拉
Configuring TemplateDemo template
对当前项目进行配置
pod-template是cocoapods官方提供的一个模板,做了什么呢