用過 Rails 應該對於 gem 不會太陌生
好用一直用,但你知道 gem 是什麼嗎?
Rubygem
Rubygem 就很像一個五金行
囊括所有應用在Ruby上的套件
GEM是什麼?
想像一下,當我們要組家具
大部分的人應該都直接去家具店挑
或是到 IKEA 買回來 DIY
少數專業的師傅可能會自己取材製作
其中 IKEA 販售的傢俱組合
被完善處理過的零組件就像是GEM
可以讓我們更快速地組好傢俱
且功能也很完整✨
寫程式時,不可能所有功能都手刻
所以我們需要適時引入套件
讓我們寫的網頁、應用程式功能更完善
不同的GEM套件有不同的功能
這邊舉例一些比較常用的GEM
- 加入特別的功能到專案中
- 更順利的安裝API
- 建立一個網頁應用程式
有這些套件,我們就能專心在開發上👩💻👨💻🧑💻
順帶一提,我們所使用的 Rails 也是 GEM 的一種哦!
GEM套件組成
讓我們來拆解一下 GEM 裡面的檔案
之後手刻會遇到,各位可以稍微了解一下😉
gem指令
既然知道 GEM 這麼好用
那我們也要知道如何使用!
安裝
在終端機打 gem install + GEM 名稱即可安裝
1 | gem install nokogiri |
搜尋
搜尋 Rubygem 裡面的套件,可以搭配正則表示法
1 | > gem search rack |
列出已經安裝的套件
開啟套件清點簿!
1 | > gem list |
卸載
一言不合就解除!解除安裝套件
1 | gem uninstall rake |
我知道GEM是什麼了,但是Gemfile又是什麼?
像是食譜的食材清單
要成就一道美食需要哪些食材
Gemfile 寫著你的專案需要哪些gem套件及版本
而且不需要使用 require 就能安裝好
下圖是 Gemfile 檔案,裡面清楚註明套件及版本
咦,不用 require 的話,又沒有下達 gem 指令,這些套件要怎麼安裝?
這時候我們就要提到 Bundler
Bundler
Bundler 像是一種相依性管理的工具
雖然說 gem 可以幫我們安裝套件
但套件有各種版本
版本與版本之間也不一定相依
Bundler 可以幫我們解決版本相依性的問題
📌 生活小例子
Bundler 很像調解會
負責調解人跟人之間的衝突
期待化解爭執
雖然 Bundler 會幫我們解決版本相依性問題
不過 Bundler 之前,還是要記得確認 gemfile 裡面的套件及版本哦 😉
除了Gemfile,還有gemspec說明書
.gemspec 包含了 gem 的名字、簡短介紹、作者名稱、相依套件的清單、gem所包含的檔案清單,可能還會有 hompage 等等
如果你想看 gem 的資訊,就可以來這個檔案參觀🤓
1 | Gem::Specification.new do |spec| |
Bundler後出現的 Gemfile.lock
gemfile.lock 像是版本管理資料
說明你安裝的套件現在是用哪個版本的
版本介紹
在 gemfile 應該很常看到一堆數字
有時候還會出現 ~>
我們來了解一下這些符號跟數字是什麼意思
1 | # 指定安裝版本 6.1.4.6 |
1 | # 安裝大於或等於 1.4.4 的版本 |
1 | # 安裝大於 5.0 且相對穩定的版本 |
現在我們來看一下數字的部分
以 1.0.2 這個版本來看
每個數字及位置各有代表的版本意思
主要版號:將功能大修改,通常硬裝都會失敗,要解除原版本再重裝
次要版號:增加新功能,可以覆蓋安裝在原有版本,但有時也會有失敗風險
修正版本:微幅調整現有功能,通常可以覆蓋安裝
參考資料: