iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 13
0
Modern Web

Ruby礦工的Rails地圖系列 第 13

如何編寫一個自己的Gem

身為一個Rails工程師
工作上時常會使用各式各樣方便的Gem
如果不能使用Gem,開發起來就好像沒這麼便捷

取之於社群、用之於社群
如果有一天自己也能貢獻一個對大家有幫助的Gem
一定是Rails工程師的浪漫吧(是嗎?)

今天來講講怎麼製作一個Gem,事實上也比想像中簡單
首先呢

$ bundle gem my_first_gem

這樣就會產生一個新的gem專案資料夾
像是Rails專案一樣,裡面會有基本的結構
假如要發佈過
必須要先修改my_first_gem.gemspec
把裡面的TODO都改掉
接著就可以測試打包會不會過囉
gem build my_first_gem.gemspec
如果出現
Successfully built RubyGem
恭喜你,做了一個空的沒有任何功能的Gem!!
第一次打包預設的版本是0.0.0
來測試一下安裝
gem install ./my_first_gem-0.0.0.gem
基本上就跟一般的Gem沒有太大的不同,除了裡面沒有任何方法之外

為了方便測試
還是來寫一點東西
在lib/my_first_gem.rb

require "my_first_gem/version"
module MyFirstGem
    def self.hi
        return "Hello World!"
    end
end

安裝後,就可以在console測試

MyFirstGem::hi
=> "Hello World!"

基本上這樣Gem就順利運作囉!
可喜可賀

在正式發佈之前,有兩種方法可以安裝
一種是放在github,另一種是放在專案資料夾內
前者例如像下面的例子
gem 'state_machine', git: 'https://github.com/seuros/state_machine.git'
有時候針對Gem有送一些PR,或是部分客製化
也可以透過Fork為自己的專案,然後安裝自己的版本

後者是將整個專案複製到vender下,開一個叫做gems的資料夾
gem "my_first_gem" , path: "vendor/gems/my_first_gem"
跑bundle install一樣可以安裝
好處是更新極快
不用擔心快取的問題,在開發階段是最方便的模式
給各位作參考


上一篇
How to mix around Unlimited Array
下一篇
淺談delegate -- 探囊取物
系列文
Ruby礦工的Rails地圖30

尚未有邦友留言

立即登入留言