RubyGems 导航菜单
指南

Specification 类包含 gem 的信息。通常在 .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       = '[email protected]'
  s.files       = ["lib/example.rb"]
  s.homepage    = 'https://rubygems.org.cn/gems/example'
  s.metadata    = { "source_code_uri" => "https://github.com/example/example" }
end

从 RubyGems 2.0 开始,Specification 可以保存任意元数据。请参阅 metadata 以了解可能添加到规范中的元数据项的格式和大小限制。

必需的 gemspec 属性

只读属性

可选的 gemspec 属性

必需的 gemspec 属性

authors=(value)

此 gem 的作者列表。

或者,可以通过将字符串分配给 spec.author 来指定单个作者。

用法

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

files

此 gem 中包含的文件。您不能追加到此访问器,必须对其进行赋值。

仅将您可以要求的文件添加到此列表中,而不是目录等。

在构建 gem 时,目录会自动从此列表中删除,其他非文件会导致错误。

用法

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

此 gem 的名称。

用法

spec.name = 'rake'

summary

此 gem 描述的简短摘要。在 gem list -d 中显示。

description 应该比摘要更详细。

用法

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

版本

此 gem 的版本。

版本字符串可以包含数字和句点,例如 1.0.0。如果版本中包含字母,则 gem 为“预发布” gem,例如 1.0.0.pre

用法

spec.version = '0.4.1'

推荐的 gemspec 属性

描述

此 gem 的详细描述

描述应该比摘要更详细,但不要过长。建议使用几段文字,不要包含示例或格式。

用法

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

电子邮件

此 gem 的联系电子邮件地址(或地址)

用法

spec.email = '[email protected]'
spec.email = ['[email protected]', '[email protected]']

主页

此 gem 主页的 URL

用法

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

license=(o)

此 gem 的许可证。

许可证的长度不得超过 64 个字符。

这应该只是您的许可证名称。许可证的完整文本应在构建 gem 时包含在 gem 中(在顶层)。

最简单的方法是指定许可证的标准 SPDX ID spdx.org/licenses/。理想情况下,您应该选择一个 OSI(开源倡议)opensource.org/licenses/ 批准的许可证。

最常用的 OSI 认可的许可证是 MIT 和 Apache-2.0。GitHub 还提供了一个许可证选择器,位于 choosealicense.com/。

您也可以使用自定义许可证文件以及您的 gemspec,并指定 LicenseRef-<idstring>,其中 idstring 是包含许可证文本的文件的名称。

您应该为您的 gem 指定许可证,以便人们知道他们被允许如何使用它以及您对它的任何限制。不指定许可证意味着所有权利保留;其他人无权出于任何目的使用该代码。

您可以使用 licenses= 设置多个许可证

用法

spec.license = 'MIT'

licenses=(licenses)

库的许可证。

每个许可证必须是简短名称,不超过 64 个字符。

这应该只是您的许可证的名称。许可证的完整文本应该在您构建 gem 时包含在 gem 中。

有关更多讨论,请参阅 license=

用法

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

元数据

元数据保存了此 gem 的额外数据,这些数据可能对其他使用者有用,并且可以由 gem 作者设置。

元数据项具有以下限制

  • 元数据必须是 Hash 对象

  • 所有键和值必须是字符串

  • 键的最大长度为 128 字节,值的长度最大为 1024 字节

  • 所有字符串必须是 UTF-8,不允许使用二进制数据

您可以使用元数据来指定指向您的 gem 的主页、代码库、文档、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"
}

这些链接将在您的 gem 在 rubygems.org 上的页面上使用,并且必须通过以下正则表达式验证。

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

required_ruby_version

此 gem 所需的 Ruby 版本

用法

spec.required_ruby_version = '>= 2.7.0'

只读属性

extensions_dir

此 gem 安装其扩展的路径。

rubygems_version

用于创建此 gem 的 RubyGems 版本。

可选的 gemspec 属性

add_development_dependency(gem, *requirements)

将名为 gem 的开发依赖项添加到此 gem 中,并带有 requirements

用法

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

开发依赖项默认情况下不会安装,并且在需要 gem 时不会激活。

add_runtime_dependency(gem, *requirements)

为该 gem 添加一个名为 gem 的运行时依赖项,并带有 requirements

用法

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

author=(o)

authors 的单数(替代)写入器

用法

spec.author = 'John Jones'

bindir

gem 中可执行脚本的路径。通常为 'exe'

用法

spec.bindir = 'exe'

cert_chain

用于签署此 gem 的证书链。有关详细信息,请参阅 Gem::Security。

executables

包含在 gem 中的可执行文件。

例如,rake gem 具有 rake 作为可执行文件。您无需指定完整路径(如 bin/rake);所有应用程序样式文件都应在 bindir 中找到。这些文件必须是可执行的 Ruby 文件。使用 bash 或其他解释器的文件将无法正常工作。

包含的可执行文件只能是 ruby 脚本,不能是其他语言的脚本或编译后的二进制文件。

用法

spec.executables << 'rake'

extensions

在安装 gem 时要构建的扩展,特别是用于编译扩展的 extconf.rb 样式文件的路径。

这些文件将在安装 gem 时运行,导致 C(或其他)代码在用户的机器上编译。

用法

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

有关为 gem 编写扩展的信息,请参阅 Gem::Ext::Builder。

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 包含 C(或其他)代码,要编译成 Ruby“扩展”。除非代码仅在特定类型的系统上编译,否则 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 中的路径,在激活此 gem 时添加到 $LOAD_PATH。如果您有扩展,则无需将 "ext" 添加到 require 路径,扩展构建过程会将扩展文件复制到“lib”中。

默认值为 "lib"

用法

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

required_ruby_version=(req)

此 gem 所需的 Ruby 版本。ruby 版本可以指定到补丁级别

$ 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。