要約
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:password@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 パッケージです。また、いくつかの警告が表示されます。
Gem::Specification.new do |s|
s.name = 'hello'
s.version = '0.0.0'
s.summary = 'hello summary'
end
実用的なライブラリを作成するための 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 の作者のリストを指定します。
-
この Gem の作者の連絡先メールアドレスを指定します。
- homepage
-
この Gem のウェブサイトの URI を指定します。
- description
-
この Gem の長い説明を指定します。
実行可能なファイル (コマンド) を含む場合の 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 にタスクを追加することもできます。
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 のホームディレクトリ
- GEM_PATH Gem のサーチパス
- $HOME/.gemrc
環境変数 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 オプションのためのモジュールを定義したライブラリです。 |