RubyGems 導覽選單
指南

Specification 類別包含寶石的資訊。通常定義在 .gemspec 檔案或 Rakefile 中,如下所示

Gem::Specification.new do |s|
  s.name        = 'example'
  s.version     = '0.1.0'
  s.licenses    = ['MIT']
  s.summary     = "This is an example!"
  s.description = "Much longer explanation of the example!"
  s.authors     = ["Ruby Coder"]
  s.email       = 'rubycoder@example.com'
  s.files       = ["lib/example.rb"]
  s.homepage    = 'https://rubygems.org/gems/example'
  s.metadata    = { "source_code_uri" => "https://github.com/example/example" }
end

從 RubyGems 2.0 開始,Specification 可以保存任意元資料。請參閱 metadata,了解您可能新增至規格中的元資料項目格式和大小的限制。

必要的 gemspec 屬性

唯讀屬性

可選的 gemspec 屬性

必要的 gemspec 屬性

authors=()

此寶石的作者清單。

或者,可透過將字串指定給 spec.author 來指定單一作者。

用法

spec.authors = ['John Jones', 'Mary Smith']

files

此寶石中包含的檔案。您無法附加到此存取器,您必須指定給它。

僅將您可以需要的檔案新增到此清單,而非目錄等。

在建立寶石時,目錄會自動從此清單中移除,其他非檔案會造成錯誤。

用法

require 'rake'
spec.files = FileList['lib/**/*.rb',
                      'bin/*',
                      '[A-Z]*'].to_a

# or without Rake...
spec.files = Dir['lib/**/*.rb'] + Dir['bin/*']
spec.files += Dir['[A-Z]*']
spec.files.reject! { |fn| fn.include? "CVS" }

name

此寶石的名稱。

用法

spec.name = 'rake'

summary

此寶石說明的簡短摘要。顯示於 gem list -d 中。

說明 應比摘要更詳細。

用法

spec.summary = "This is a small summary of my gem"

version

此寶石的版本。

版本字串可以包含數字和句點,例如 1.0.0。如果版本中包含字母,例如 1.0.0.pre,則寶石為「預發行」寶石。

用法

spec.version = '0.4.1'

建議的 gemspec 屬性

description

此寶石的詳細說明

說明應比摘要更詳細,但不要過長。建議長度為幾段文字,且不含範例或格式化。

用法

spec.description = <<~EOF
  Rake is a Make-like program implemented in Ruby. Tasks and
  dependencies are specified in standard Ruby syntax.
EOF

email

此寶石的聯絡電子郵件地址(或地址)

用法

spec.email = 'john.jones@example.com'
spec.email = ['jack@example.com', 'jill@example.com']

homepage

此寶石首頁的網址

用法

spec.homepage = 'https://github.com/ruby/rake'

license=(o)

此寶石的授權。

授權不得超過 64 個字元。

這應僅為您的授權名稱。在建立寶石時,授權的完整文字應位於寶石中(頂層)。

最簡單的方法是指定授權的標準 SPDX ID spdx.org/licenses/。理想情況下,您應選擇一個 OSI(開放原始碼倡議組織)opensource.org/licenses/ 核准的授權。

最常用的 OSI 核准授權為 MIT 和 Apache-2.0。GitHub 也在 choosealicense.com/ 提供授權選擇器。

您也可以將自訂授權檔案與您的 gemspec 搭配使用,並指定 LicenseRef-<idstring>,其中 idstring 是包含授權文字的檔案名稱。

您應為您的寶石指定授權,以便人們知道他們如何被允許使用它以及您對它施加的任何限制。未指定授權表示保留所有權利;其他人無權出於任何目的使用該程式碼。

您可以使用 licenses= 設定多個授權

用法

spec.license = 'MIT'

licenses=(授權)

該函式庫的授權。

每個授權都必須是簡短的名稱,不超過 64 個字元。

這應僅為您的授權名稱。授權的全文應在您建置它時包含在寶石中。

請參閱 license= 以進行更多討論

用法

spec.licenses = ['MIT', 'GPL-2.0']

metadata

元資料保存此寶石的其他資料,這些資料可能對其他使用者有用,並且可由寶石作者設定。

元資料項目有以下限制

  • 元資料必須是雜湊物件

  • 所有金鑰和值都必須是字串

  • 金鑰最多可為 128 位元組,而值最多可為 1024 位元組

  • 所有字串都必須為 UTF-8,不允許二進位資料

您可以使用元資料來指定連結到您的寶石首頁、程式碼庫、文件、wiki、郵件清單、問題追蹤器和變更日誌。

s.metadata = {
  "bug_tracker_uri"   => "https://example.com/user/bestgemever/issues",
  "changelog_uri"     => "https://example.com/user/bestgemever/CHANGELOG.md",
  "documentation_uri" => "https://www.example.info/gems/bestgemever/0.0.1",
  "homepage_uri"      => "https://bestgemever.example.io",
  "mailing_list_uri"  => "https://groups.example.com/bestgemever",
  "source_code_uri"   => "https://example.com/user/bestgemever",
  "wiki_uri"          => "https://example.com/user/bestgemever/wiki"
  "funding_uri"       => "https://example.com/donate"
}

這些連結將用於您在 rubygems.org 上的寶石頁面,並且必須通過下列正規表示式的驗證。

%r{\Ahttps?:\/\/([^\s:@]+:[^\s:@]*@)?[A-Za-z\d\-]+(\.[A-Za-z\d\-]+)+\.?(:\d{1,5})?([\/?]\S*)?\z}

required_ruby_version

此寶石所需的 Ruby 版本

用法

spec.required_ruby_version = '>= 2.7.0'

唯讀屬性

extensions_dir

此寶石安裝其擴充功能的路徑。

rubygems_version

用於建立此寶石的 RubyGems 版本。

可選的 gemspec 屬性

add_development_dependency(寶石, *需求)

將名為 寶石 的開發依賴項新增到此寶石,並附有 需求

用法

spec.add_development_dependency 'example', '~> 1.1', '>= 1.1.4'

開發依賴項並未預設安裝,且在需要寶石時不會啟用。

add_runtime_dependency(寶石, *需求)

將名為 寶石 的執行時間依賴項新增到此寶石,並附有 需求

用法

spec.add_runtime_dependency 'example', '~> 1.1', '>= 1.1.4'

author=(o)

authors 的單數(替代)寫入器

用法

spec.author = 'John Jones'

bindir

寶石中可執行腳本的路徑。通常為「exe」

用法

spec.bindir = 'exe'

cert_chain

用於簽署此寶石的憑證鏈。有關詳細資訊,請參閱 Gem::Security。

executables

包含在寶石中的可執行檔。

例如,rake 寶石具有 rake 作為可執行檔。您不必指定完整路徑(如 bin/rake);預期所有應用程式樣式檔案都可以在 bindir 中找到。這些檔案必須是可以執行的 Ruby 檔案。使用 bash 或其他解釋器的檔案將無法使用。

包含的可執行檔只能是 ruby 腳本,不能是其他語言或編譯二進位檔的腳本。

用法

spec.executables << 'rake'

extensions

安裝寶石時要建置的擴充功能,特別是 extconf.rb 樣式檔案的路徑,用於編譯擴充功能。

這些檔案會在 gem 安裝時執行,讓 C (或其他) 程式碼編譯在使用者的機器上。

用法

spec.extensions << 'ext/rmagic/extconf.rb'

請參閱 Gem::Ext::Builder,以取得關於撰寫 gem 擴充套件的資訊。

extra_rdoc_files

要新增到 RDoc 的額外檔案,例如 README 或 doc/examples.txt

當使用者選擇產生 gem 的 RDoc 文件時(通常在安裝時),所有程式庫檔案會傳送至 RDoc 以進行處理。此選項允許您包含一些非程式碼檔案,以提供更完整的文件集。

用法

spec.extra_rdoc_files = ['README', 'doc/user-guide.txt']

platform=(platform)

此 gem 執行的平台。

這通常是 Gem::Platform::RUBY 或 Gem::Platform::CURRENT。

大多數 gem 都包含純 Ruby 程式碼;它們應該只保留預設值。有些 gem 包含要編譯成 Ruby「擴充套件」的 C (或其他) 程式碼。除非程式碼只能在特定類型的系統上編譯,否則 gem 應保留預設值。有些 gem 包含預先編譯的程式碼(「二進位 gem」)。由其適當地設定平台屬性特別重要。一個捷徑是將平台設定為 Gem::Platform::CURRENT,這將導致 gem 建構器將平台設定為執行建構的系統的適當值。

如果此屬性設定為非預設值,它會包含在建置 gem 時的檔案名稱中,例如:nokogiri-1.6.0-x86-mingw32.gem

用法

spec.platform = Gem::Platform.local

post_install_message

gem 安裝後顯示的訊息。

用法

spec.post_install_message = "Thanks for installing!"

rdoc_options

指定產生 API 文件時要使用的 rdoc 選項。

用法

spec.rdoc_options << '--title' << 'Rake -- Ruby Make' <<
  '--main' << 'README' <<
  '--line-numbers'

require_paths=(val)

當此 gem 被啟用時,要新增到 $LOAD_PATH 的 gem 中路徑。如果您有擴充套件,則不需要在 require 路徑中新增 "ext",擴充套件建置程序會將擴充套件檔案複製到「lib」中給您。

預設值是 "lib"

用法

# If all library files are in the root directory...
spec.require_paths = ['.']

required_ruby_version=(req)

此 gem 所需的 Ruby 版本。ruby 版本可以指定到 patch 等級

$ ruby -v -e 'p Gem.ruby_version'
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
#<Gem::Version "2.0.0.247">

也可以指定預發行版本。

用法

# This gem will work with 1.8.6 or greater...
spec.required_ruby_version = '>= 1.8.6'

# Only with final releases of major version 2 where minor version is at least 3
spec.required_ruby_version = '~> 2.3'

# Only prereleases or final releases after 2.6.0.preview2
spec.required_ruby_version = '> 2.6.0.preview2'

# This gem will work with 2.3.0 or greater, including major version 3, but lesser than 4.0.0
spec.required_ruby_version = '>= 2.3', '< 4'

required_rubygems_version

此 gem 所需的 RubyGems 版本

required_rubygems_version=(req)

此 gem 所需的 RubyGems 版本

requirements

列出此 gem 正常運作所必須符合的外部(對 RubyGems 而言)需求。這只是提供給使用者的資訊。

用法

spec.requirements << 'libmagick, v6.0'
spec.requirements << 'A good graphics card'

signing_key

用於簽署此 gem 的金鑰。詳情請參閱 Gem::Security。