library rubygems

要約

RubyGems を扱うためのクラスやモジュールが定義されているライブラリです。

gem コマンドの使い方

$ gem help

  RubyGems は Ruby のための高機能なパッケージ管理ツールです。
  これはより多くの情報へのポインタを含んでいる基本的なヘルプメッセージです。

    使用方法:
      gem -h/--help
      gem -v/--version
      gem command [arguments...] [options...]

    例:
      gem install rake
      gem list --local
      gem build package.gemspec
      gem help install

    さらにヘルプ:
      gem help commands            全ての 'gem' コマンドをリストアップします
      gem help examples            いくつかの使用方法の例を表示します
      gem help platforms           プラットフォームに関する情報を表示します
      gem help <COMMAND>           COMMAND に関するヘルプを表示します
                                     (e.g. 'gem help install')
    より詳しい情報:
      https://rubygems.org

Gem パッケージをインストールする

例えば rak ( https://rubygems.org/gems/rak ) をインストールするには、以下のいずれかを実行します。

$ gem install rak
$ sudo gem install rak

特定のバージョンの Gem パッケージをインストールするには以下のようにします。

$ gem install rak --version 0.8.1    # バージョン 0.8.1 をインストールする
$ gem install rak --version '>= 0.5' # バージョン 0.5 以上のものをインストールする

Proxy サーバ経由で Gem パッケージをインストールするには以下のようにします。

$ gem install rak -p http://user:pasword@proxy.example.com/

Gem パッケージをアンインストールする

例えば rak をアンインストールするには、以下のいずれかを実行します。

$ gem uninstall rak
$ sudo gem uninstall rak

特定のバージョンの Gem パッケージをアンインストールするには以下のようにします。

$ gem uninstall rak --version 0.8.1

Gem パッケージを更新する

インストールされている Gem パッケージを更新するには以下のようにします。

$ gem update
$ sudo gem update

特定の Gem パッケージを更新するには以下のようにします。

$ gem update rak

Gem パッケージを探す

パッケージ名から Gem パッケージを探すことができます。 'active' という文字列をパッケージ名に含むパッケージを探すには以下のようにします。

$ gem search active       # デフォルトではリポジトリから検索します
$ gem search active -a    # -a オプションをつけると全てのバージョンを表示します

より詳細な条件で検索したい場合は query を使用してください。

$ gem query -n ^rails$ -r # rails にちょうど一致するものを検索する
$ gem query -n ^rails -r  # rails で始まるものを検索する

パッケージの詳細からキーワード検索することはできません。

Gem パッケージを作成する

作成した gemspec ファイルを元にして Gem パッケージを簡単に作成することができます。

$ gem build <gemspec filename>

最小の gemspec は以下のようになります。ビルドするために必要な最小の gemspec なので出来上がるのはメタデータのみを含む Gem パッケージです。また、いくつかの警告が表示されます。

gemspec

Gem::Specification.new do |s|
  s.name    = 'hello'
  s.version = '0.0.0'
  s.summary = 'hello summary'
end

実用的なライブラリを作成するための gemspec の例を示します。警告メッセージが出力されないようにいくつか設定を追加しています。

gemspec

Gem::Specification.new do |s|
  s.name              = 'hello'
  s.version           = '0.0.0'
  s.summary           = 'hello summary'
  s.files             = ['lib/hello.rb']
  s.authors           = ['Hello Author']
  s.email             = 'hello_author@example.com'
  s.homepage          = 'http://example.com/hello/'
  s.description       = 'hello description'
end
name

この Gem の名前を指定します。

version

この Gem のバージョンを指定します。

summary

この Gem の短い説明を指定します。

files

この Gem に含むファイルのリストを指定します。

authors

この Gem の作者のリストを指定します。

email

この Gem の作者の連絡先メールアドレスを指定します。

homepage

この Gem のウェブサイトの URI を指定します。

description

この Gem の長い説明を指定します。

実行可能なファイル (コマンド) を含む場合の gemspec は以下のようになります。

gemspec

Gem::Specification.new do |s|
  s.name              = 'hello'
  s.version           = '0.0.0'
  s.summary           = 'hello summary'
  s.files             = ['bin/hello', 'lib/hello.rb']
  s.executables       = ['hello']
  s.authors           = ['Hello Author']
  s.email             = 'hello@example.com'
  s.homepage          = 'http://example.com/hello'
  s.description       = 'hello description'
end

ライブラリの例に加えて executables を追加しています。

また、以下のように Rakefile にタスクを追加することもできます。

gemspec

require 'rake/gempackagetask'

PKG_FILES = FileList[
  'lib/hello.rb',
  'spec/*'
]
spec = Gem::Specification.new do |s|
  s.name             = 'hello'
  s.version          = '0.0.1'
  s.author           = 'Hello Author'
  s.email            = 'hello@example.com'
  s.homepage         = 'http://example.com/hello'
  s.platform         = Gem::Platform::RUBY
  s.summary          = 'Hello Gem'
  s.files            = PKG_FILES.to_a
  s.require_path     = 'lib'
  s.has_rdoc         = false
  s.extra_rdoc_files = ['README']
end

Rake::GemPackageTask.new(spec) do |pkg|
  pkg.gem_spec = spec
end

@see Gem::Specification, rake

gem コマンドの設定

環境変数 GEM_HOME, GEM_PATH を設定する事によって Gem コマンドの動作を変更することができます。また、ホームディレクトリに .gemrc という YAML フォーマットで書かれたファイルを置くことでも動作を変更することができます。

例:

---
:backtrace: false
:benchmark: false
:bulk_threshold: 1000
:sources:
- https://rubygems.org
:update_sources: true
:verbose: true
gemhome: /home/hoge/.gems
gempath:
- /usr/local/lib/ruby/gems/1.9
gem: --no-rdoc --no-ri

参考

Rubyist Magazine - シリーズ パッケージマネジメント 【第 1 回】 RubyGems (1)

https://magazine.rubyist.net/articles/0006/0006-PackageManagement.html

Rubyist Magazine - シリーズ パッケージマネジメント 【第 2 回】 RubyGems (2)

https://magazine.rubyist.net/articles/0010/0010-PackageManagement.html

クラス

Gem::Builder

Gem::Specification のインスタンスから Gem パッケージを作成するためのクラスです。

Gem::Cache

Alias of Gem::SourceIndex

Gem::Dependency

Gem の依存関係を管理するクラスです。

Gem::GemPathSearcher

Gem パッケージに含まれているファイルのうちロード可能なものを検索するためのクラスです。

Gem::Platform

選択した Gem のインストールを実行できるプラットフォームのリストを扱うクラスです。

Gem::RemoteFetcher

リモートソースから Gem パッケージや Gem パッケージの情報を取得するためのクラスです。

Gem::Requirement

Gem の必要条件を扱うクラスです。

Gem::SilentUI

完全に何もしない UI です。

Gem::SourceIndex

個々のソースから取得した全ての有効な Gem パッケージをインデックス化するためのクラスです。

Gem::SourceInfoCache

個々の Gem パッケージのインデックス情報のコピーを保存するためのクラスです。

Gem::SourceInfoCacheEntry

Gem::SourceInfoCache が持つエントリを表すためのクラスです。

Gem::SpecFetcher

リモートリポジトリから Gem のメタデータを取得して更新するためのクラスです。

Gem::Specification

Gem パッケージのメタデータを扱うためのクラスです。

Gem::StreamUI

シンプルなストリームを実装したユーザインターフェイスです。

  Gem::ConsoleUI

Gem::StreamUI を標準入力、標準出力、標準エラー出力を使用して初期化します。

Gem::StreamUI::SilentProgressReporter

何もしない進捗報告のクラスです。

Gem::StreamUI::SimpleProgressReporter

シンプルな表示を行う進捗報告のクラスです。

Gem::StreamUI::VerboseProgressReporter

現在の進捗に関するメッセージを表示する進捗報告のクラスです。

Gem::Version

文字列で表現されたバージョンを比較可能 (Comparable) にするためのクラスです。

Gem::Version::Requirement

Alias of Gem::Requirement

モジュール

Gem
Gem::DefaultUserInteraction

このモジュールはデフォルトの Gem::UserInteraction を定義しています。

Gem::QuickLoader

prelude.c で定義されている内部用のモジュールです。

Gem::UserInteraction

デフォルト UI にアクセスしやすくするためのモジュールです。

例外クラス

Gem::Exception

RubyGems で扱う全ての例外のスーパークラスです。

  Gem::CommandLineError

コマンドラインの例外です。

  Gem::DependencyError

依存関係の例外です。

  Gem::DependencyRemovalException

Gem を削除出来なかった場合に使用する例外です。

  Gem::DocumentError

システムに RDoc がインストールされていない場合に使用する例外です。

  Gem::EndOfYAMLException

YAML データが不正である場合に使用する例外です。

  Gem::FilePermissionError

ファイルの権限に関する例外です。

  Gem::FormatException

フォーマットに関する例外です。

  Gem::GemNotFoundException

Gem が見つからなかった場合の例外です。

  Gem::GemNotInHomeException

Gem が適切なディレクトリにインストールされていない場合に使用する例外です。

  Gem::InstallError

何らかの理由で Gem をインストール出来なかった場合に使用する例外です。

  Gem::InvalidSpecificationException

不正な gemspec に関する例外です。

  Gem::OperationNotSupportedError

サポートされていない操作を行った場合に使用する例外です。

  Gem::RemoteError

リモートで問題が発生した場合に使用する例外です。

  Gem::RemoteFetcher::FetchError

Gem::RemoteFetcher での処理で発生する IO や HTTP の例外をラップする例外クラスです。

  Gem::RemoteInstallationCancelled

???

  Gem::RemoteInstallationSkipped

???

  Gem::RemoteSourceException

HTTP 経由でネットワークにアクセス出来ない場合に使用する例外です。

  Gem::VerificationError

Gem の検証でエラーになった場合に使用する例外です。

Gem::LoadError

Gem をロードできなかった場合に発生するエラーです。

Gem::SystemExitException

何らかの理由でコマンドを実行出来ない場合に使用する例外です。

同時にrequireされるライブラリ

rubygems

RubyGems を扱うためのクラスやモジュールが定義されているライブラリです。

rubygems/builder

Gem::Specification のインスタンスから Gem パッケージを作成するためのライブラリです。

rubygems/defaults

RubyGems ライブラリで使用するデフォルト値を返すメソッドを定義したライブラリです。

rubygems/dependency

Gem の依存関係を管理するためのライブラリです。

rubygems/digest/sha2

Digest::SHA256 をラップするためのライブラリです。

rubygems/exceptions

RubyGems で使用する例外クラスを定義したライブラリです。

rubygems/gem_path_searcher

Gem パッケージに含まれているファイルのうちロード可能なものを検索するためのライブラリです。

rubygems/platform

選択した Gem のインストールを実行できるプラットフォームのリストを扱うライブラリです。

rubygems/remote_fetcher

リモートソースから Gem パッケージや Gem パッケージの情報を取得するためのライブラリです。

rubygems/requirement

Gem パッケージのバージョンに関する必須条件を扱うためのライブラリです。

rubygems/source_index

個々のソースから取得した全ての有効な Gem パッケージをインデックス化するためのライブラリです。

rubygems/source_info_cache

個々の Gem パッケージのインデックス情報のコピーを保存するためのライブラリです。

rubygems/source_info_cache_entry

Gem::SourceInfoCache が持つエントリを表すためのライブラリです。

rubygems/spec_fetcher

リモートリポジトリから Gem のメタデータを取得して更新するためのライブラリです。

rubygems/specification

Gem パッケージのメタデータを扱うためのライブラリです。

rubygems/user_interaction

ユーザとのやりとりを行うライブラリです。

rubygems/version

Gem パッケージのバージョンを扱うためのライブラリです。

サブライブラリ

rubygems/command

gem コマンドを扱うためのライブラリです。

rubygems/command_manager

gem コマンドによってサポートされているサブコマンドを管理するライブラリです。

rubygems/commands/build_command

Gem パッケージをビルドするためのライブラリです。

rubygems/commands/cert_command

Gem パッケージの証明書や署名の設定を管理するためのライブラリです。

rubygems/commands/check_command

インストールされている Gem パッケージを検証するためのライブラリです。

rubygems/commands/cleanup_command

ローカルにインストールされている古い Gem を削除するライブラリです。

rubygems/commands/contents_command

インストールされている Gem パッケージに含まれているファイルリストを表示するためのライブラリです。

rubygems/commands/dependency_command

インストールされている Gem パッケージの依存関係を表示するためのライブラリです。

rubygems/commands/environment_command

RubyGems の環境に関する情報を表示するためのライブラリです。

rubygems/commands/fetch_command

Gem パッケージをダウンロードしてカレントディレクトリに保存するためのライブラリです。

rubygems/commands/generate_index_command

ある Gem サーバに対するインデックスを作成するためのライブラリです。

rubygems/commands/help_command

Gem コマンドに関するヘルプを提供するためのライブラリです。

rubygems/commands/install_command

Gem パッケージをローカルリポジトリにインストールするためのライブラリです。

rubygems/commands/list_command

Gem パッケージの名前を前方一致で検索するためのライブラリです。

rubygems/commands/lock_command

指定された特定のバージョンの Gem パッケージに依存する Gem を使用するために必要な Kernel#gem メソッドの呼び出し方法を文字列で出力します。

rubygems/commands/mirror_command

リモートリポジトリをローカルリポジトリにミラーするためのライブラリです。

rubygems/commands/outdated_command

更新が必要な Gem パッケージの一覧を出力するためのライブラリです。

rubygems/commands/pristine_command

インストールされている Gem パッケージを初期状態にするためのライブラリです。

rubygems/commands/query_command

Gem パッケージの情報を検索するためのライブラリです。

rubygems/commands/rdoc_command

RDoc と ri のライブラリを生成するためのライブラリです。

rubygems/commands/search_command

指定された文字列を含む Gem パッケージを全て表示するためのライブラリです。

rubygems/commands/server_command

ローカルにインストールされている Gem パッケージとそのドキュメントを HTTP サーバに載せて公開するためのライブラリです。

rubygems/commands/sources_command

Gem パッケージの取得元の情報を管理するためのライブラリです。

rubygems/commands/specification_command

指定された Gem パッケージの gemspec の情報を YAML 形式で表示するためのライブラリです。

rubygems/commands/stale_command

インストールされている Gem パッケージの一覧をアクセス時刻とともに表示するためのライブラリです。

rubygems/commands/uninstall_command

Gem パッケージをアンインストールするためのライブラリです。

rubygems/commands/unpack_command

指定された Gem パッケージをカレントディレクトリに展開するためのライブラリです。

rubygems/commands/update_command

ローカルリポジトリにインストールされている Gem パッケージを更新するためのライブラリです。

rubygems/commands/which_command

指定された Gem パッケージに含まれるライブラリのパスを見つけるためのライブラリです。

rubygems/config_file

設定ファイルに書かれている gem コマンドのオプションをオブジェクトに保存するためのライブラリです。

rubygems/custom_require

Kernel#require を再定義するためのライブラリです。

rubygems/dependency_installer

ある Gem が依存している Gem を同時にインストールするためのライブラリです。

rubygems/dependency_list

Gem の依存関係を扱うためのライブラリです。

rubygems/digest/digest_adapter

Ruby 1.8.5 と 1.8.6 の間に存在する API の差異を吸収するためのライブラリです。

rubygems/digest/md5

Digest::MD5 をラップするためのライブラリです。

rubygems/digest/sha1

Digest::SHA1 をラップするためのライブラリです。

rubygems/doc_manager

Gem パッケージの RDoc, RI を生成するためのクラスを扱うライブラリです。

rubygems/ext

拡張ライブラリをビルドするためのライブラリです。

rubygems/ext/builder

拡張ライブラリをビルドするためのクラスを扱うライブラリです。

rubygems/ext/configure_builder

configure スクリプトを元に拡張ライブラリをビルドするクラスを扱うライブラリです。

rubygems/ext/ext_conf_builder

extconf.rb を元にして拡張ライブラリをビルドするためのクラスを扱うライブラリです。

rubygems/ext/rake_builder

Rake を使用して拡張ライブラリをビルドするためのクラスを扱うライブラリです。

rubygems/format

RubyGems の Gem ファイルの内部構造を扱うためのライブラリです。

rubygems/gem_openssl

OpenSSL がインストールされていないシステムがあるかもしれないので、 OpenSSL が使えるかどうかを確認するためのライブラリです。

rubygems/gem_runner

gem コマンドを実行するためのライブラリです。

rubygems/indexer

Gem リポジトリのインデックスを作成するためのクラスを扱うためのライブラリです。

rubygems/install_update_options

Gem::Command で使用するインストールとアップデートに関するオプションを扱うためのモジュールを定義したライブラリです。

rubygems/installer

RubyGems の Gem をインストールするためのライブラリです。

rubygems/local_remote_options

Gem::Command で使用する --local, --remote オプションのためのモジュールを定義したライブラリです。

rubygems/old_format

RubyGems の Gem ファイルの内部構造を扱うためのライブラリです。

rubygems/package

このライブラリは Gem パッケージを扱うためのライブラリです。

rubygems/package/f_sync_dir
rubygems/package/tar_header

tar アーカイブの各エントリのヘッダを表すクラスを提供するライブラリです。

rubygems/package/tar_input

gem-format な tar ファイルを読み込む Gem::Package::TarReader のラッパークラスを提供するライブラリです。

rubygems/package/tar_output

gem-format な tar ファイルを書き出す Gem::Package::TarWriter のラッパークラスを提供するライブラリです。

rubygems/package/tar_reader

gem-format な tar ファイルを読むためのクラスを提供するライブラリです。

rubygems/package/tar_reader/entry

tar アーカイブ中のそれぞれのエントリを扱うためのクラスを提供するライブラリです。

rubygems/package/tar_writer

tar ファイルを書き込むためのクラスを提供するライブラリです。

rubygems/require_paths_builder

必要であれば、'.require_paths' というファイルを Gem ごとに作成するためのモジュールを提供するためのライブラリです。

rubygems/security

このライブラリは暗号署名を RubyGems パッケージに使用するために使用します。

rubygems/server

Gem パッケージを配布したり Gem パッケージに同梱されているドキュメントを参照するための簡易ウェブサーバを動かすためのライブラリです。

rubygems/test_utilities

テストで使用するクラスやメソッドを定義しています。

rubygems/timer

このライブラリは、ログ取得のために $log というグローバル変数を定義します。

rubygems/uninstaller

Gem のアンインストールを行うためのライブラリです。

rubygems/validator

様々な Gem ファイルや Gem データベースを検証するためのライブラリです。

rubygems/version_option

Gem::Command の --version, --platform オプションのためのモジュールを定義したライブラリです。

追加・再定義されるメソッド

Kernel#gem