在開放原始碼的世界,有非常多厲害開發者願意無私的貢獻程式碼,而這些程式碼大多會打包成好用的套件!
Gem 是 Ruby 的套件管理系統,用於打包、分發和管理 Ruby 程式庫。每個 Gem 都是一個獨立的 Ruby 程式庫,可以包含 Ruby 代碼、文件、測試、文檔和元數據。
像是上篇提及過的 Gem:
- Devise: Devise 用於實現身份驗證和用戶管理功能。他提供了一個完整的用戶註冊、登錄、忘記密碼等功能的解決方案。通過安裝 Devise,你可以在應用程序中輕鬆添加用戶身份驗證,而不必自己編寫大量代碼。
- CarrierWave: CarrierWave 是一個用於處理文件上傳的 Gem。允許你在應用程序中輕鬆管理用戶上傳的圖像、文件等。使用 CarrierWave,你可以在模型中定義文件上傳字段,然後自動處理文件上傳、存儲和圖像調整大小等操作。
- Kaminari: Kaminari 是一個用於實現分頁功能的 Gem。允許你在 Rails 應用程序中輕鬆添加分頁功能,並提供了一個簡潔的 API 來處理分頁查詢。
如何安裝 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 add
和 gem install
的主要區別:
bundle add
:用於將 gem 添加到特定 Ruby 項目的相依性中(Gemfile),以確保不同項目使用相同的 gem 版本。受 Bundler 管理,並更新 Gemfile 和 Gemfile.lock。gem install
:用於全局安裝 gem,將其安裝到系統中的 Ruby 環境,從而使其在所有項目中都可用。這不會修改項目的相依性,也不受 Bundler 管理。