在開放原始碼的世界,有非常多厲害開發者願意無私的貢獻程式碼,而這些程式碼大多會打包成好用的套件,稱為 Gem。都可在 RubyGems 網站上找得到:
頁面長得像這樣
那要怎麼使用呢?首先打開手邊的rails專案 有一個檔案名 Gemfile 打開後會看到
這裡就是所以Gem存放的位置,有比較要注意的一點是 有看到圖中 有這段
這意思就是 在開發跟測試環境下使用 就像我們使用rspec 跟 FactoryBot ,
Faker… 等測試會用到的套件都放在這,以便我們開發測試使用,
當你從Gem官網要下載套件的時候 你會看到這個頁面
然後有在GEMFILE 那邊複製 貼到Gemfile裡面
接著再執行 bundle (安裝) 再照著套件的文件步驟做 就完成了
等等 各位有發現 為什麼有的gem 旁邊會有一些數字或者符號呢?這就是也要注意的點了
像這兩個後面就沒有數字跟符號,這樣的寫法將會在安裝的時候選用「最新的穩定(stable)版本」,要注意這裡的重點是「穩定」而不是「最新」。以 Rails 來說,假設最新的版本是 5.0.2 beta 4,但最新的「穩定」版本是 5.0.1 版,當沒有加註版本號的時候,它會選擇安裝 5.0.1 版本。
加註明確版號
例如像這樣
ruby '2.5.3'
這意思就是 我要安裝ruby 2.5.3的版本
大於、小於版號
gem 'uglifier', '>= 1.3.0'
要安裝大於或等於 1.3.0 版本。如果是這樣:
gem 'rails', '>= 5.0.0.beta4', '< 5.1'
則是會選用在 5.0.0.beta4 跟 5.1 之間的版本。
那這個呢?
gem 'coffee-rails', '~> 4.1.0'
這是指會選用 4.1.0 以上,但 4.2 以下(不包括 4.2)的最新版本。
為什麼這麼麻煩?舉個例子來說,例如版本號 5.2.3三個數字分別代表主要版號(Major)、次要版號(Minor)以及修訂版號(Patch),分別表示:
主要版號:功能大改,公開的 API 做了不少修正,通常沒辦法向下相容。
次要版號:加了某些新功能,但不影響其它功能,通常向下相容。
修訂版號:對現有的功能做了小幅度的修正,通常可向下相容。
這是個不成文的規定(語義化版本),雖然沒有強制,但幾乎大部份的 Gem 作者都會依照這個規範。這個 ~> 的「差不多」寫法,可以確保不會因為套件昇級而把原本正常運作的系統弄壞了。
最後以我自己的學習經驗,我一開始也是都不看手冊,因為我很懼怕英文,尤其是整頁滿滿的英文,但後面發現這樣學習效果太差了,就慢慢地邊翻譯邊看,雖然有時候看的不是很懂,但大概會知道如何使用,跟遇到什麼問題要怎麼解決,也比較不會因為一直出現紅色畫面而讓你喪失學程式的興趣喔!!