創(chuàng)建自定義的Ruby gem包的教程
編寫一個最簡單的例子
1. 建好如下文件夾
注意:lib目錄下必須有個和你gem名字一樣的rb文件。
$ 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
這里面可以設置很多屬性。我會專門寫篇文章介紹。
上面字段的意思,比較簡單。相信大家都能理解。
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':
設定完之后發(fā)布
% gem push hola-0.0.0.gem Pushing gem to RubyGems.org... Successfully registered gem: hola (0.0.0)
發(fā)布成功。
這樣任何一個人都可以使用你寫的gem了。
稍微復雜的rubygem例子
上面的例子只有一個ruby文件,一般gem應該沒有這么簡單的。
下面說下有多個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'
其他就和上面一樣了。很簡單吧。
相關(guān)文章
Ruby連接使用windows下sql server數(shù)據(jù)庫代碼實例
這篇文章主要介紹了Ruby連接使用windows下sql server數(shù)據(jù)庫代碼實例,本文直接給出實現(xiàn)代碼,而且給出了兩種實現(xiàn)和access數(shù)據(jù)庫的實現(xiàn)代碼,需要的朋友可以參考下2015-05-05Ruby中的Proc類及Proc的類方法Proc.new的使用解析
用Proc類可以用Proc.new來創(chuàng)建一個Proc類,進而來操作塊,這里我們就來進行Ruby中的Proc類及Proc的類方法Proc.new的使用解析.2016-05-05Ruby字符串、條件、循環(huán)、數(shù)組、Hash、類基本操作筆記
這篇文章主要介紹了Ruby字符串、條件、循環(huán)、數(shù)組、Hash、類基本操作筆記,需要的朋友可以參考下2014-06-06Ruby中創(chuàng)建字符串的一些技巧小結(jié)
這篇文章主要介紹了Ruby中創(chuàng)建字符串的一些技巧小結(jié),本文用先講解技巧然后給出代碼示例的方式列出了多種Ruby創(chuàng)建字符串方法,需要的朋友可以參考下2015-01-01Ruby中訪問SQL Server數(shù)據(jù)庫的配置實例
這篇文章主要介紹了Ruby中訪問SQL Server數(shù)據(jù)庫的配置實例,本文通過FreeTDS實現(xiàn),同時介紹了在ActiveRecord上使用Tiny_TDS的技巧,需要的朋友可以參考下2014-11-11Ruby on Rails中的ActiveRecord編程指南
這篇文章主要介紹了Ruby on Rails中的ActiveRecord編程指南,作者對編寫ActiveRecord的通用習慣給出了建議,需要的朋友可以參考下2015-08-08Linux系統(tǒng)上配置Nginx+Ruby on Rails+MySQL超攻略
這篇文章主要介紹了Linux系統(tǒng)上配置Nginx+Ruby on Rails+MySQL超攻略,用到了RVM,此種服務器搭建配置極力推薦!需要的朋友可以參考下2015-08-08PHP實現(xiàn)的一個保存遠程文件到本地的函數(shù)分享
這篇文章主要介紹了PHP實現(xiàn)的一個保存遠程文件到本地的函數(shù)分享,本文直接給出實現(xiàn)代碼和使用方法,需要的朋友可以參考下2014-11-11