編寫一個最簡單的例子
1. 建好如下文件夾
注意:lib目錄下必須有個和你gem名字一樣的rb文件。
復(fù)制代碼 代碼如下:
$ cd hola
$ tree
.
├── hola.gemspec
└── lib
└── hola.rb
2. 編寫代碼
. hola.rb
% cat lib/hola.rb
class Hola
def self.hi
puts "Hello world!"
end
end
.hola.gemspec
% cat hola.gemspec
Gem::Specification.new do |s|
s.name = 'hola'
s.version = '0.0.0'
s.date = '2010-04-28'
s.summary = "Hola!"
s.description = "A simple hello world gem"
s.authors = ["Nick Quaranto"]
s.email = 'nick@quaran.to'
s.files = ["lib/hola.rb"]
s.homepage =
'http://rubygems.org/gems/hola'
end
這里面可以設(shè)置很多屬性。我會專門寫篇文章介紹。
上面字段的意思,比較簡單。相信大家都能理解。
3.編譯生成gem
% gem build hola.gemspec
Successfully built RubyGem
Name: hola
Version: 0.0.0
File: hola-0.0.0.gem
% gem install ./hola-0.0.0.gem
Successfully installed hola-0.0.0
1 gem installed
4.測試使用
% irb
>> require 'hola'
=> true
>> Hola.hi
Hello world!
注意:在ruby 1.9.2之前到版本里面,需要先require 'rubygem',才能使用我們寫的gem.
5.發(fā)布到rubygems網(wǎng)站
$ curl -u tom https://rubygems.org/api/v1/api_key.yaml >
~/.gem/credentials
Enter host password for user 'tom':
設(shè)定完之后發(fā)布
% gem push hola-0.0.0.gem
Pushing gem to RubyGems.org...
Successfully registered gem: hola (0.0.0)
發(fā)布成功。
這樣任何一個人都可以使用你寫的gem了。
稍微復(fù)雜的rubygem例子
上面的例子只有一個ruby文件,一般gem應(yīng)該沒有這么簡單的。
下面說下有多個ruby文件該怎么寫。
1. 目錄結(jié)構(gòu)
多了個hola目錄和translator.rb文件
% tree
.
├── hola.gemspec
└── lib
├── hola
│ └── translator.rb
└── hola.rb
2. 代碼
lib/hola/translator.rb
% cat lib/hola/translator.rb
class Hola::Translator
def initialize(language)
@language = language
end
def hi
case @language
when :spanish
"hola mundo"
else
"hello world"
end
end
end
lib/hola.rb
% cat lib/hola.rb
class Hola
def self.hi(language = :english)
translator = Translator.new(language)
translator.hi
end
end
require 'hola/translator'
.hola.gemspec
% cat hola.gemspec
Gem::Specification.new do |s|
s.name = 'hola'
s.version = '0.0.0'
s.date = '2010-04-28'
s.summary = "Hola!"
s.description = "A simple hello world gem"
s.authors = ["Nick Quaranto"]
s.email = 'nick@quaran.to'
s.files = ["lib/hola.rb", "lib/hola/translator.rb"]
s.homepage =
'http://rubygems.org/gems/hola'
end
紅色是和上面不一樣的地方。
其他步驟和上面一樣了。很簡單吧!
最后說下怎么寫個 gem包含可執(zhí)行文件的例子。
這個也很簡單。像rake就是典型的包含可執(zhí)行文件的gem.
1. 在剛才工程目錄下建個bin文件夾
生成可執(zhí)行文件,并且修改權(quán)限為可運行。
% mkdir bin
% touch bin/hola
% chmod a+x bin/hola
2. 修改可執(zhí)行文件內(nèi)容
bin/hola
#!/usr/bin/env ruby
require 'hola'
puts Hola.hi(ARGV[0])
測試下
% ruby -Ilib ./bin/hola
hello world
% ruby -Ilib ./bin/hola spanish
hola mundo
3 .最后修改gemspec
% head -4 hola.gemspec
Gem::Specification.new do |s|
s.name = 'hola'
s.version = '0.0.1'
s.executables 'hola'
其他就和上面一樣了。很簡單吧。
您可能感興趣的文章:- Ruby中g(shù)em包管理器的用法及用bundler來管理多版本的gem
- Ruby中的gem包管理的使用及gem源搭建教程
- Ruby包管理器gem常用命令
- ruby執(zhí)行周期性任務(wù)的三種gem介紹
- Ruby環(huán)境下安裝使用bundler來管理多版本的gem