安裝gem包時ruby.html" target="_blank">ruby使用的默認源代碼是rubygems。由于國內的網絡,使用Ruby的gem安裝各種軟件包基本上是失敗的,本文為大家推薦創建自定義的Ruby gem包的方法,希望對你有幫助!
編寫一個最簡單的例子
1. 建好如下文件夾
注意:lib目錄下必須有個和你gem名字一樣的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 = '[email protected]' 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.發布到rubygems網站
$ curl -u tom https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials Enter host password for user 'tom':
?
設定完之后發布
% gem push hola-0.0.0.gem Pushing gem to RubyGems.org... Successfully registered gem: hola (0.0.0)
?
發布成功。
這樣任何一個人都可以使用你寫的gem了。
稍微復雜的rubygem例子
上面的例子只有一個ruby文件,一般gem應該沒有這么簡單的。
下面說下有多個ruby文件該怎么寫。
1. 目錄結構
多了個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 = '[email protected]' s.files = ["lib/hola.rb", "lib/hola/translator.rb"] s.homepage = 'http://rubygems.org/gems/hola' end
紅色是和上面不一樣的地方。
其他步驟和上面一樣了。很簡單吧!
最后說下怎么寫個 gem包含可執行文件的例子。
這個也很簡單。像rake就是典型的包含可執行文件的gem.
1. 在剛才工程目錄下建個bin文件夾
生成可執行文件,并且修改權限為可運行。
% mkdir bin % touch bin/hola % chmod a+x bin/hola
?
2. 修改可執行文件內容
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 gem包的方法都有了了解了?想學習更多這方面的知識,可以將武林技術頻道收藏起來喲!?
|
新聞熱點
疑難解答
圖片精選