建立自訂的Ruby gem包的教程_ruby專題

來源:互聯網
上載者:User

編寫一個最簡單的例子

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.發布到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    = 'nick@quaran.to'    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' 

其他就和上面一樣了。很簡單吧。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.