rubygems.org guides 通译二(什么是一个gem)
rubygems.org guides 翻译二(什么是一个gem)
目录:
1.结构化你的gem
2.gemspec
1.架构化你的gem
每一个gem都有自己的名字/版本/平台(platform)。举个例子,rake这个gem的版本是0.8.7(2009年5月),平台是ruby,意味着你可以在任何平台的ruby上运行。
平台的基础是CPU架构,操作系统类型和操作系统版本。
gem help platform
在一个gem里面包括三部分,code,文档和gemspec
每个gem的功能也许不同,但是他们都得遵循相同的标准结构。
freewill/
├── bin/
│ └── freewill
├── lib/
│ └── freewill.rb
├── test/
│ └── test_freewill.rb
├── README
├── Rakefile
└── freewill.gemspec
- lib目录下方的是gem的原代码
-
test或者spec
目录下放的是测试文件,依赖于作者使用的而是那个测试框架 - gem通常包含一个
Rakefile
,通常用于自动测试,生成代码,执行任务等工作。 - gem通常还包含一个扩展的bin目录,当该gem安装后会被自动加载到用户的PATH目录。
- 文档通常位于README文件和代码注释中,当你安装一个gem后,文档也会自动为你生成。大多数gem包含RDoc文档,但是也有一些使用YARD的。
- 最后一块是gemspec,包含一个gem的具体信息。gem文件,测试信息,平台,版本号,作者邮箱/姓名等。
2.gemspec
gemspec包含了该gem的具体信息。
% cat freewill.gemspec
Gem::Specification.new do |s|
s.name = 'freewill'
s.version = '1.0.0'
s.summary = "Freewill!"
s.description = "I will choose Freewill!"
s.authors = ["Nick Quaranto"]
s.email = 'nick@quaran.to'
s.homepage = 'http://example.com/freewill'
s.files = ["lib/freewill.rb", ...]
end