September 29, 2023

Viiisit [Ruby on Rails] - Gem 是什麼呀!

#ruby on rails#ruby#gem

在開放原始碼的世界,有非常多厲害開發者願意無私的貢獻程式碼,而這些程式碼大多會打包成好用的套件!

Gem 是 Ruby 的套件管理系統,用於打包、分發和管理 Ruby 程式庫。每個 Gem 都是一個獨立的 Ruby 程式庫,可以包含 Ruby 代碼、文件、測試、文檔和元數據。

像是上篇提及過的 Gem:

如何安裝 Gem?

使用 gem 命令來安裝 Gem。
例如,要安裝 “devise” 的 Gem,您可以運行 gem install devise
其實每個套件在發行時,通常都會在 GitHub 上有自己的 README.md 檔案,裡頭都會有詳細說明該如何安裝以及使用(看技術文件其實不容易,但是多看幾個多練幾次,就可以很快上手了!)

關於 Bundler

Ruby 的 Bundler 是套件管理工具,用於管理軟體相依性,使他們更容易安裝、更新和管理。
在 rails new your_app_name 後,可以透過 bundle -v 去查詢有無 Bundler,有的話會看見:Bundler version 2.4.19(根據當下安裝的版本而有所不同),如果沒有的話,可以透過:gem install bundler

軟體之間的相依性(Dependency)
指一個軟體元件(例如模組、套件、程式庫、模組、函式庫等)需要另一個軟體元件的功能、資源、代碼或服務以達到正常運作的狀態。這種相依性是軟體開發和維護中非常常見的情況,對於建構複雜的軟體系統和模組化軟體具有關鍵性的作用。

通常情況下,實際在專案上安裝 Gem 時,使用 bundle add 是一種較佳的方法,特別是正在開發一個基於 Ruby 的專案,並使用 Bundler 來管理相依性時。使用 bundle add 可以確保 gem 被正確添加到的專案的 Gemfile 中,並且相應的版本資訊也會被更新到 Gemfile.lock 中,這在多人協作的專案中也非常方便,當分享專案給其他開發人員時,他們可以使用相同的 Gemfile 和 Gemfile.lock 來確保相同的相依性。

以下說明 bundle addgem install 的主要區別:


參考資料:
Rails初心者的學習筆記2:Rails的app:Gem
使用套件(Gem)讓開發更有效率