Rubygems 与 gem
RubyGems
RubyGems是一个方便而强大的Ruby程序包管理器,Ruby的第三方插件是用gem方式来管理,非常容易发布和共享,一个简单的命令就可以安装上第三方的扩展库。特点:能远程安装包,包之间依赖关系的管理,简单可靠的卸载,查询机制,能查询本地和远程服务器的包信息,能保持一个包的不同版本,基于Web的查看接口,能查看你安装的gem的信息。
Ruby 1.9.1以后,跟随Ruby默认安装,不需要另外安装。
gem包的安装方式:
RubyGems.org 是官方的Gem托管中心,RubyGems就是从这里远程下载gem包的。
RubyGems 将所有的gem包 安装到
/[ruby root]/lib/ruby/gems/[ver]/ 目录下,这其中包括了cache、doc、gems、specifications 4个目录,cache下放置下载的原生gem包,gems下则放置的是解压过的的gem包。 当安装过程中遇到问题时,可以进入这些目录,手动删除有问题的gem包,然后重新运行 gem install [gemname] 命令即可。
工作原理
如果我们想使用一个Ruby文件,比较常用的方法是require,load。
比如当前目录有个‘demo.rb’文件,我们使用require或load就可以加载这个Ruby文件。
require './demo'
load './demo.rb'
`
注:关于require和load的区别这里就不讲了,详细的请查阅其他资料。
Rubygems的工作原理和我们手工的方式类似,只不过Rubygems制定了一种代码组织规范。
比如Rails这个gem包,目录:
rails/
|_ othres files
|_ lib
|_ rails/
|_ rails.rb
|_ ...
|_ rails.gemspec
最重要的是这个gemspec文件,这里记录着gem的规格,比如文件查找路径,依赖gem等信息。
当你require 'rails'的时候, Ruby代码的加载是这样的:
先去lib目录下找rails.rb这个同名文件,然后通过这个文件加载其他代码。
工作原理就这么简单。