创建你的第一个Gem

2012-01-08 20:36

创建你的第一个Gem

by

at 2012-01-08 12:36:27

original http://item.feedsky.com/~feedsky/heikezhi/~8608072/592583108/6713895/1/item.html

原文作者:John McAliley,原文地址,翻译:Pilipala

你在Ruby世界看到到处都是Gem。他们几乎是所有的Ruby应用程序的核心。我承认当我试着建立第一个Gem的时候,我有点战战兢兢。但我很快就发现了,这玩意简单得要死。在这个博客系列中,我将涵盖从头开始创建一个Gem的基础,然后转移到更高级的主题,包括Gem生成工具和Rails引擎。首先,对于你们这些Ruby有新手,第一个问题是:什么是Gem?简而言之,它是打包的Ruby代码。在最低限度,Gem包括一个Ruby文件和一个gemspec。gemspec(Gem规范)描述Gem信息,RubyGems包管理器需要这些信息安装Gem。

RubyGems包管理器可以下载,并安装Gem到你的系统,并允许你在其他Ruby程序中使用这些Gem。Ruby 1.9默认安装RubyGems。如果你使用的是Ruby 1.9之前的版本,你可以在这里下载RubyGems。在Ruby 1.9之前版本的应用程序中使用RubyGems,你需要在你的应用程序,加入这一行 :

require 'rubygems'

Ruby 1.9中不需要这么做,因为RubyGems已经被包含在Ruby 1.9中。

Gem规范(Gem Specification)

正如我在前面提到,Gem的规范描述了Gem。让我们看看一个基本的gemspec文件:

Gem::Specification.new do |s|
  s.name = %q{my_gem}
  s.version = "0.0.1"
  s.date = %q{2011-09-29}
  s.summary = %q{my_gem is an awesome gem}
  s.files = [
    "Gemfile",
    "Rakefile",
    "VERSION",
    "lib/my_gem.rb"
  ]
  s.require_paths = ["lib"]
end

gemspec是一个相当简单的文件,描述你的Gem的各个方面。在上面的例子gemspec中的文件中,我只列出必需的属性。
前4个属性是不言自明。“文件”属性中列出包括在Gem中的所有文件。
“require_paths”属性指定的目录,其中包含Ruby文件应该被这个Gem所加载。gemspec所用到的完整属性列表,请参考这里

这是一些简单的基础知识,现在让我们切入正题,寻找更有趣的东西。

从头开始创建一个Gem

1、建立Gem的基本文件结构:

输入shell指令,并创建Gem需要的目录:

$ mkdir awesome_gem
$ cd awesome_gem
$ mkdir lib

就这样!你需要为你的Gem和一个lib目录来存放你的Ruby文件的根目录。

2、创建的gemspec

我们将使用上一节gemspec文件作为模板。创建一个名为“awesome_gem.gemspec”在你的Gem的根目录中。然后添加一些代码,以成为一个有效的gemspec:

Gem::Specification.new do |s|
  s.name = %q{awesome_gem}
  s.version = "0.0.0"
  s.date = %q{2011-09-29}
  s.summary = %q{awesome_gem is the best}
  s.files = [
    "lib/awesome_gem.rb"
  ]
  s.require_paths = ["lib"]
end

这个文件包含了一个gemspec标准所需的属性,并且显示我们有一个“lib”目录。在lib目录中的文件“awesome_gem.rb”将被用来保存这个Gem的Ruby代码。

3、添加一些代码

为了简单起见,我们将只用一个Ruby文件在这个Gem里:/lib/awesome_gem.rb,你会看到这种结构类型在大多数你遇到的Gem中。 “lib”内的根文件通常会与Gem的名称相匹配。本例中,“awesome_gem”和“/lib/awesome_gem.rb” 。

继续创建这个文件,添加下�