要約
.gem ファイルを読み書きするクラスです。
.gem ファイルは、gemspec を gzip 圧縮した metadata.gz、ファイル本体の tar を gzip 圧縮した data.tar.gz、チェックサムの checksums.yaml.gz を含む tar アーカイブです。
Gem::Specification から .gem ファイルを作ることも、既存の .gem ファイルを検証して展開することもできます。
以下の例は、lib/example.rb があるディレクトリで実行することを前提にしています。
require 'rubygems/package'
spec = Gem::Specification.new do |s|
s.name = 'example'
s.version = '1.0'
s.summary = 'An example gem'
s.authors = ['Example Author']
s.license = 'MIT'
s.homepage = 'https://example.com/example'
s.required_ruby_version = '>= 3.0'
s.files = ['lib/example.rb']
end
Gem::Package.build(spec) # => "example-1.0.gem"
package = Gem::Package.new('example-1.0.gem')
package.spec.name # => "example"
package.contents # => ["lib/example.rb"]
package.files # => ["metadata.gz", "data.tar.gz", "checksums.yaml.gz"]
package.extract_files('out') # out/lib/example.rb に展開します
目次
- 特異メソッド
- インスタンスメソッド
特異メソッド
build(spec, skip_validation = false, strict_validation = false, file_name = nil) -> StringRuby 2.0.0 から[permalink][rdoc][edit]-
specから.gemファイルを作り、作ったファイルの名前を返します。ファイルはカレントディレクトリに作られ、
Successfully built RubyGemから始まるメッセージを出力します。ファイル名はfile_nameを指定した場合はそれに、そうでない場合は Gem::Specification#file_name になります。- [PARAM]
spec: -
.gemファイルに書き込む Gem::Specification を指定します。 - [PARAM]
skip_validation: - 真を指定すると Gem::Specification#validate を実行しません。
- [PARAM]
strict_validation: - 真を指定すると、警告も検証エラーとして扱います。
- [PARAM]
file_name: -
作る
.gemファイルの名前を指定します。 - [EXCEPTION]
ArgumentError: -
skip_validationとstrict_validationがともに真の場合に発生します。
[SEE_ALSO] Gem::Package#build
- [PARAM]
new(gem, security_policy = nil) -> Gem::PackageRuby 2.0.0 から[permalink][rdoc][edit]-
.gemファイルを扱う Gem::Package オブジェクトを返します。古い形式の
.gemファイルの場合は、Gem::Package::Oldのインスタンスを返します。仕様や中身は、Gem::Package#spec や Gem::Package#verify などを呼んだときに読み込みます。- [PARAM]
gem: -
.gemファイルのパスを文字列で指定するか、readを持つ IO オブジェクトを指定します。 - [PARAM]
security_policy: - 署名の検証に使う Gem::Security::Policy を指定します。nil の場合は署名を検証しません。
[SEE_ALSO] Gem::Package#verify
- [PARAM]
raw_spec(path, security_policy = nil) -> [Gem::Specification, String]Ruby 2.7.0 から[permalink][rdoc][edit]-
pathの.gemファイルから Gem::Specification と、metadata.gzを展開した YAML 文字列の 2 要素の配列を返します。YAML 文字列は
--- !ruby/object:Gem::Specificationで始まります。- [PARAM]
path: -
.gemファイルのパスを指定します。 - [PARAM]
security_policy: - 署名の検証に使う Gem::Security::Policy を指定します。nil の場合は署名を検証しません。
- [PARAM]
インスタンスメソッド
build(skip_validation = false, strict_validation = false) -> ()Ruby 2.0.0 から[permalink][rdoc][edit]-
Gem::Package#spec= で設定した仕様から
.gemファイルを書き出します。引数の意味は Gem::Package.build と同じです。
Successfully built RubyGemから始まるメッセージを出力します。- [PARAM]
skip_validation: - 真を指定すると Gem::Specification#validate を実行しません。
- [PARAM]
strict_validation: - 真を指定すると、警告も検証エラーとして扱います。
- [EXCEPTION]
ArgumentError: -
skip_validationとstrict_validationがともに真の場合に発生します。
[SEE_ALSO] Gem::Package.build
- [PARAM]
checksums -> {String => {String => String}}Ruby 2.0.0 から[permalink][rdoc][edit]-
checksums.yaml.gzから読み込んだチェックサムを返します。外側のキーはダイジェストのアルゴリズム名(
"SHA256"・"SHA512")、内側のキーはファイル名("metadata.gz"・"data.tar.gz")で、値は 16 進表記のダイジェストです。 Gem::Package#verify を呼ぶまでは空のハッシュを返します。[SEE_ALSO] Gem::Package#verify
contents -> [String]Ruby 2.0.0 から[permalink][rdoc][edit]-
data.tar.gzに含まれるファイル名(gem に入っているファイル)の配列を返します。未検証の場合は、先に Gem::Package#verify を呼びます。
- [EXCEPTION]
Gem::Package::FormatError: -
.gemファイルの形式が不正な場合に発生します。
[SEE_ALSO] Gem::Package#files
- [EXCEPTION]
copy_to(path) -> ()Ruby 2.3.0 から[permalink][rdoc][edit]-
.gemファイルをpathにコピーします。pathが既にある場合は何もしません。- [PARAM]
path: - コピー先のパスを指定します。
- [PARAM]
data_mode -> Integer | nilRuby 2.6.0 から[permalink][rdoc][edit]-
Gem::Package#extract_files で展開する通常ファイルのパーミッションを返します。
8 進表記の整数で表します。nil の場合は、アーカイブに記録された値になります。
[SEE_ALSO] Gem::Package#data_mode=
data_mode=(mode)Ruby 2.6.0 から[permalink][rdoc][edit]-
Gem::Package#extract_files で展開する通常ファイルのパーミッションを設定します。
- [PARAM]
mode: - パーミッションを整数で指定します。
[SEE_ALSO] Gem::Package#data_mode
- [PARAM]
dir_mode -> Integer | nilRuby 2.6.0 から[permalink][rdoc][edit]-
Gem::Package#extract_files で展開するディレクトリのパーミッションを返します。
nil の場合は、アーカイブに記録された値になります。
[SEE_ALSO] Gem::Package#dir_mode=
dir_mode=(mode)Ruby 2.6.0 から[permalink][rdoc][edit]-
Gem::Package#extract_files で展開するディレクトリのパーミッションを設定します。
- [PARAM]
mode: - パーミッションを整数で指定します。
[SEE_ALSO] Gem::Package#dir_mode
- [PARAM]
extract_files(destination_dir, pattern = "*") -> ()Ruby 2.0.0 から[permalink][rdoc][edit]-
data.tar.gzの中身をdestination_dirに展開します。未検証の場合は、先に Gem::Package#verify を呼びます。
- [PARAM]
destination_dir: - 展開先のディレクトリを指定します。
- [PARAM]
pattern: - 展開するファイルを絞り込む glob を指定します。
- [EXCEPTION]
Gem::Package::FormatError: -
.gemファイルの形式が不正な場合に発生します。 - [EXCEPTION]
Gem::Package::PathError: -
destination_dirの外に出るパスを含む場合に発生します。 - [EXCEPTION]
Gem::Package::SymlinkError: -
destination_dirの外を指すシンボリックリンクを含む場合に発生します。
[SEE_ALSO] Gem::Package#verify
- [PARAM]
files -> [String] | nilRuby 2.0.0 から[permalink][rdoc][edit]-
.gemアーカイブ直下のエントリ名の配列を返します。["metadata.gz", "data.tar.gz", "checksums.yaml.gz"]のような配列です。gem の中身のファイルの一覧ではありません(それは Gem::Package#contents です)。 Gem::Package#verify を呼ぶまでは nil を返します。[SEE_ALSO] Gem::Package#contents
prog_mode -> Integer | nilRuby 2.6.0 から[permalink][rdoc][edit]-
Gem::Package#extract_files で展開する実行ファイルのパーミッションを返します。
nil の場合は、アーカイブに記録された値になります。
[SEE_ALSO] Gem::Package#prog_mode=
prog_mode=(mode)Ruby 2.6.0 から[permalink][rdoc][edit]-
Gem::Package#extract_files で展開する実行ファイルのパーミッションを設定します。
- [PARAM]
mode: - パーミッションを整数で指定します。
[SEE_ALSO] Gem::Package#prog_mode
- [PARAM]
security_policy -> Gem::Security::Policy | nilRuby 2.0.0 から[permalink][rdoc][edit]-
署名の検証に使うセキュリティポリシーを返します。
nil の場合は署名を検証しません。
[SEE_ALSO] Gem::Package#security_policy=
security_policy=(policy)Ruby 2.0.0 から[permalink][rdoc][edit]-
署名の検証に使うセキュリティポリシーを設定します。
- [PARAM]
policy: - Gem::Security::Policy を指定します。nil の場合は署名を検証しません。
[SEE_ALSO] Gem::Package#security_policy
- [PARAM]
spec -> Gem::SpecificationRuby 2.0.0 から[permalink][rdoc][edit]-
この gem の Gem::Specification を返します。
既存の
.gemファイルを読む場合はmetadata.gzから読み込んだもの(未検証の場合は先に Gem::Package#verify を呼びます)、.gemファイルを作る場合は Gem::Package#spec= で設定したものです。[SEE_ALSO] Gem::Package#spec=
spec=(spec)Ruby 2.0.0 から[permalink][rdoc][edit]-
Gem::Package#build で使う仕様を設定します。
- [PARAM]
spec: - Gem::Specification を指定します。
[SEE_ALSO] Gem::Package#spec
- [PARAM]
verify -> trueRuby 2.0.0 から[permalink][rdoc][edit]-
.gemファイルを検証します。正しい仕様書を含むこと、
data.tar.gzを含むこと、チェックサムが一致すること、(セキュリティポリシーがある場合は)署名が正しいことを検証します。成功すると true を返し、以降は Gem::Package#spec・Gem::Package#files・Gem::Package#checksums が使えるようになります。- [EXCEPTION]
Gem::Package::FormatError: - ファイルが無い場合、gem の形式でない場合、チェックサムが一致しない場合などに発生します。
- [EXCEPTION]
Gem::Security::Exception: - 署名の検証に失敗した場合に発生します。
[SEE_ALSO] Gem::Package#spec, Gem::Package#files, Gem::Package#checksums
- [EXCEPTION]