指南
揭開 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 的程式碼test
或spec
目錄包含測試,具體取決於開發人員使用的測試架構- gem 通常有一個
Rakefile
,rake 程式使用它來自動化測試、產生程式碼和執行其他任務。 - 此 gem 還包含
bin
目錄中的可執行檔,當安裝 gem 時,它將載入使用者的PATH
。 - 文件通常包含在
README
中,並與程式碼內嵌。當您安裝 gem 時,文件會自動為您產生。大多數 gem 都包含 RDoc 文件,但有些則使用 YARD 文件。 - 最後一個部分是 gemspec,其中包含有關 gem 的資訊。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 戰士。