创建你的第一个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” 。
继续创建这个文件,添加下�