iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
1
自我挑戰組

毫無基礎學習 Ruby on Rails 的 甘苦心得系列 第 14

DAY14 Ruby on Rails 中的 Gemfile

  • 分享至 

  • xImage
  •  

在開放原始碼的世界,有非常多厲害開發者願意無私的貢獻程式碼,而這些程式碼大多會打包成好用的套件,稱為 Gem。都可在 RubyGems 網站上找得到:

頁面長得像這樣

https://ithelp.ithome.com.tw/upload/images/20190928/201188428jillrFi7m.png

那要怎麼使用呢?首先打開手邊的rails專案 有一個檔案名 Gemfile 打開後會看到

https://ithelp.ithome.com.tw/upload/images/20190928/20118842PyBAAhTd24.png

這裡就是所以Gem存放的位置,有比較要注意的一點是 有看到圖中 有這段
https://ithelp.ithome.com.tw/upload/images/20190928/20118842bNw0t4UXGW.png

這意思就是 在開發跟測試環境下使用 就像我們使用rspec 跟 FactoryBot ,
Faker… 等測試會用到的套件都放在這,以便我們開發測試使用,
當你從Gem官網要下載套件的時候 你會看到這個頁面

https://ithelp.ithome.com.tw/upload/images/20190928/20118842n94ydmzEPn.png

然後有在GEMFILE 那邊複製 貼到Gemfile裡面

https://ithelp.ithome.com.tw/upload/images/20190928/20118842fBls0srQnK.png

接著再執行 bundle (安裝) 再照著套件的文件步驟做 就完成了
等等 各位有發現 為什麼有的gem 旁邊會有一些數字或者符號呢?這就是也要注意的點了

https://ithelp.ithome.com.tw/upload/images/20190928/20118842tE4ix9By4d.png

像這兩個後面就沒有數字跟符號,這樣的寫法將會在安裝的時候選用「最新的穩定(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 作者都會依照這個規範。這個 ~> 的「差不多」寫法,可以確保不會因為套件昇級而把原本正常運作的系統弄壞了。

最後以我自己的學習經驗,我一開始也是都不看手冊,因為我很懼怕英文,尤其是整頁滿滿的英文,但後面發現這樣學習效果太差了,就慢慢地邊翻譯邊看,雖然有時候看的不是很懂,但大概會知道如何使用,跟遇到什麼問題要怎麼解決,也比較不會因為一直出現紅色畫面而讓你喪失學程式的興趣喔!!


上一篇
DAY13 模組 (module)
下一篇
DAY 15 迴圈 迭代(Loop and Iteration)
系列文
毫無基礎學習 Ruby on Rails 的 甘苦心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言