身為一個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一樣可以安裝
好處是更新極快
不用擔心快取的問題,在開發階段是最方便的模式
給各位作參考