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这个同名文件,然后通过这个文件加载其他代码。

工作原理就这么简单。