RubyGems 導覽選單
指南

揭開 RubyGem 中奧秘的面紗。

Gem 的結構

每個 gem 都有一個名稱、版本和平台。例如,rake gem 有 13.0.6 版本(2021 年 7 月)。Rake 的平台是 ruby,表示它可以在 Ruby 執行的任何平台上執行。

平台基於 CPU 架構、作業系統類型,有時是作業系統版本。範例包括「x86-mingw32」或「java」。平台表示 gem 僅適用於為相同平台建置的 ruby。RubyGems 會自動下載適合你平台的正確版本。請參閱 gem help platform 以取得完整詳細資料。

gem 內部有下列元件

  • 程式碼(包括測試和支援工具程式)
  • 文件
  • gemspec

每個 gem 都遵循相同的標準程式碼組織結構

% tree freewill
freewill/
├── bin/
│   └── freewill
├── lib/
│   └── freewill.rb
├── test/
│   └── test_freewill.rb
├── README
├── Rakefile
└── freewill.gemspec

在此,您可以看到 gem 的主要元件

  • lib 目錄包含 gem 的程式碼
  • testspec 目錄包含測試,具體取決於開發人員使用的測試架構
  • gem 通常有一個 Rakefilerake 程式使用它來自動化測試、產生程式碼和執行其他任務。
  • 此 gem 還包含 bin 目錄中的可執行檔,當安裝 gem 時,它將載入使用者的 PATH
  • 文件通常包含在 README 中,並與程式碼內嵌。當您安裝 gem 時,文件會自動為您產生。大多數 gem 都包含 RDoc 文件,但有些則使用 YARD 文件。
  • 最後一個部分是 gemspec,其中包含有關 gem 的資訊。gem 的檔案、測試資訊、平台、版本號碼等都列在這裡,以及作者的電子郵件和姓名。

有關 gemspec 檔案的更多資訊

建立您自己的 gem

Gemspec

gemspec 指定有關 gem 的資訊,例如其名稱、版本、說明、作者和首頁。

以下是一個 gemspec 檔案範例。您可以在 如何製作 gem 中瞭解更多資訊。

% cat freewill.gemspec
Gem::Specification.new do |s|
  s.name        = 'freewill'
  s.version     = '1.0.0'
  s.summary     = "Freewill!"
  s.description = "I will choose Freewill!"
  s.authors     = ["Nick Quaranto"]
  s.email       = 'nick@quaran.to'
  s.homepage    = 'http://example.com/freewill'
  s.files       = ["lib/freewill.rb", ...]
end

有關 gemspec 的更多資訊,請查看完整的 規格參考,其中詳細介紹每個元資料欄位。

鳴謝

本指南改編自 Gonçalo Silva 在 docs.rubygems.org 上的原始教學課程,以及來自 Gem Sawyer,現代 Ruby 戰士。