結構
要建立一個 GEM Package,首先要先搞清楚結構。因為我們是走極簡路線的,所以現在一開始連 unit-test 都不要 test。將你的 GEM Package 設定為下面的結構。
-----gem.spec
|
--README
|
--lib/
裡面 lib 就是放所有程式的所在。
結構檔
根目錄下面有 gem.spec,跟 README 兩個檔案。其中 gem.spec 是描述 GEM Package 的結構檔,也是最重要的檔案,裡面記載了這個 GEM Package 絕大多數的資訊。可以說學會了寫這個檔案,就學會了打包 GEM Package。這裡要講的是其實 gem.spec 檔名是我隨便取的,檔名不限定,而且他的格式可以使用 ruby 或是 YAML 語法的,這裡先使用 Ruby 語法。
require 'rubygems'裡面
SPEC=Gem::Specification.new do |s|
s.name="Taiwan_Year"
s.version='0.01'
s.author='thegiive'
s.email="thegiive at gmail dot com"
s.homepage="http://lightyror.thegiive.net/"
s.platform=Gem::Platform::RUBY
s.summary="為台灣學年度跟民國所寫的Plugin"
condidates =Dir.glob("{bin,lib,docs,test}/**/*")
s.files=condidates.delete_if do |item|
item.include?("CVS")|| item.include?("rdoc")
end
s.require_path="lib"
s.has_rdoc=false
s.extra_rdoc_files=["README"]
end
- s.name 就是這個 gem 的名稱,也是他打包出來的檔名,也就是說這個 gem package 會叫做 Taiwan_Year-0.01.gem。
- s.version 部分 godfat 有解釋過,盡量從 0.0.1 而不是從 0.0.0 開始寫起。
- s.summary 就是當你打入 gem list 出現的簡單文字,安裝了本 gem ,按下 gem list 這裡會出現
sources (0.0.1)
這樣的情況。
This package provides download sources for remote gem installation
Taiwan_Year (0.01)
為台灣的學年度跟民國寫的 Plugin
vim-ruby (2006.07.11)
Ruby configuration files for Vim. Run 'vim-ruby-install.rb' to
complete installation.
放入程式
最後把程式放入到 lib 底下,這裡是使用 計算民國跟學年度的 Plugin的範例,把他放入 lib/year.rb 檔案裡面
class Time打包 gem
def roc_year
self.year - 1911
end
def student_year
if self.month < 7
self.roc_year - 1
else
self.roc_year
end
end
end
當程式都放好後,開始打包 gem 了。我們這裡使用 gem build 指令來打包
gem build gem.spec這裡面的 gem.spec 就是你剛剛寫的結構檔的檔名。成功了之後,你就會發現我們已經產生了一個 Taiwan_Year-0.01.gem。
安裝 gem
要安裝這個剛打包好的 gem 就是直接打
gem i TaiwanYear-0.01.gem即可。
使用 gem
要使用剛剛安裝好的 gem package ,首先要 require 'rubygems' ,告訴程式這個是使用 gem 的程式。
其次要搞清楚程式檔名,像我雖然 GEM Package 叫做 TaiwanYear ,但是我的程式其實是放在 lib/year.rb 底下的,所以使用上還是得必須 require 'year' 。
解決方式很簡單,當我們放入程式到 lib 裡面的時候,請將程式名稱取的跟 GEM Package 名字相同即可。像是當初在打包時,我們就將程式放在 lib/TaiwanYear.rb 底下,以後使用上就可以這樣使用。
require 'rubygems'如此,我們已經學會如何打包 gem 了。
require 'TaiwanYear'
puts Time.now.roc_year