標籤:

如何創建自己的ruby gem包

編寫一個最簡單的例子

1. 建好如下文件夾

注意:lib目錄下必須有個和你gem名字一樣的rb文件。

[ruby] view plaincopy

  1. $cdhola
  2. $tree
  3. .
  4. ├──hola.gemspec
  5. └──lib
  6. └──hola.rb

2. 編寫代碼

. hola.rb

[ruby] view plaincopy

  1. %catlib/hola.rb
  2. classHola
  3. defself.hi
  4. puts"Helloworld!"
  5. end
  6. end

.hola.gemspec [ruby] view plaincopy

  1. %cathola.gemspec
  2. Gem::Specification.newdo|s|
  3. s.name="hola"
  4. s.version="0.0.0"
  5. s.date="2010-04-28"
  6. s.summary="Hola!"
  7. s.description="Asimplehelloworldgem"
  8. s.authors=["NickQuaranto"]
  9. s.email="nick@quaran.to"
  10. s.files=["lib/hola.rb"]
  11. s.homepage=
  12. "http://rubygems.org/gems/hola"
  13. end

這裡面可以設置很多屬性。我會專門寫篇文章介紹。

上面欄位的意思,比較簡單。相信大家都能理解。

3.編譯生成gem

[ruby] view plaincopy

  1. %gembuildhola.gemspec
  2. SuccessfullybuiltRubyGem
  3. Name:hola
  4. Version:0.0.0
  5. File:hola-0.0.0.gem
  6. %geminstall./hola-0.0.0.gem
  7. Successfullyinstalledhola-0.0.0
  8. 1geminstalled

4.測試使用 [ruby] view plaincopy

  1. %irb
  2. >>require"hola"
  3. =>true
  4. >>Hola.hi
  5. Helloworld!

注意:在ruby 1.9.2之前到版本裡面,需要先require "rubygem",才能使用我們寫的gem.

5.發布到rubygems網站

[ruby] view plaincopy

  1. $curl-utomhttps://rubygems.org/api/v1/api_key.yaml>
  2. ~/.gem/credentials
  3. Enterhostpasswordforuser"tom":

設定完之後發布 [ruby] view plaincopy

  1. %gempushhola-0.0.0.gem
  2. PushinggemtoRubyGems.org...
  3. Successfullyregisteredgem:hola(0.0.0)

發布成功。

這樣任何一個人都可以使用你寫的gem了。

稍微複雜的rubygem例子

上面的例子只有一個ruby文件,一般gem應該沒有這麼簡單的。

下面說下有多個ruby文件該怎麼寫。

1. 目錄結構

多了個hola目錄和translator.rb文件

[ruby] view plaincopy

  1. %tree
  2. .
  3. ├──hola.gemspec
  4. └──lib
  5. ├──hola
  6. │└──translator.rb
  7. └──hola.rb

2. 代碼

lib/hola/translator.rb

[ruby] view plaincopy

  1. %catlib/hola/translator.rb
  2. classHola::Translator
  3. definitialize(language)
  4. @language=language
  5. end
  6. defhi
  7. case@language
  8. when:spanish
  9. "holamundo"
  10. else
  11. "helloworld"
  12. end
  13. end
  14. end

lib/hola.rb

[ruby] view plaincopy

  1. %catlib/hola.rb
  2. classHola
  3. defself.hi(language=:english)
  4. translator=Translator.new(language)
  5. translator.hi
  6. end
  7. end
  8. require"hola/translator"

.hola.gemspec

[ruby] view plaincopy

  1. %cathola.gemspec
  2. Gem::Specification.newdo|s|
  3. s.name="hola"
  4. s.version="0.0.0"
  5. s.date="2010-04-28"
  6. s.summary="Hola!"
  7. s.description="Asimplehelloworldgem"
  8. s.authors=["NickQuaranto"]
  9. s.email="nick@quaran.to"
  10. s.files=["lib/hola.rb","lib/hola/translator.rb"]
  11. s.homepage=
  12. "http://rubygems.org/gems/hola"
  13. end

紅色是和上面不一樣的地方。

其他步驟和上面一樣了。很簡單吧!

最後說下怎麼寫個 gem包含可執行文件的例子。

這個也很簡單。像rake就是典型的包含可執行文件的gem.

1. 在剛才工程目錄下建個bin文件夾

生成可執行文件,並且修改許可權為可運行。

[ruby] view plaincopy

  1. %mkdirbin
  2. %touchbin/hola
  3. %chmoda+xbin/hola

2. 修改可執行文件內容bin/hola[ruby] view plaincopy

  1. #!/usr/bin/envruby
  2. require"hola"
  3. putsHola.hi(ARGV[0])

測試下[ruby] view plaincopy

  1. %ruby-Ilib./bin/hola
  2. helloworld
  3. %ruby-Ilib./bin/holaspanish
  4. holamundo

3 .最後修改gemspec[ruby] view plaincopy

  1. %head-4hola.gemspec
  2. Gem::Specification.newdo|s|
  3. s.name="hola"
  4. s.version="0.0.1"
  5. s.executables<<"hola"

其他就和上面一樣了。很簡單吧。
推薦閱讀:

人活著不容易,別把自己太虧欠(句句入心)
如何催促自己的朋友還錢?
?認識自己性格的能力測試!
對自己的決定不說後悔
南瓜營養功效好,但千萬別和它一起吃,小心是損害自己的健康!

TAG:自己 |