Rubygemsについて

Rubygemsとは

Rubygemsとは、Rubyの標準パッケージ管理システムです。
RubyGemsでは「gem」コマンドを使ってパッケージの管理・作成・配布等が簡単に行えます。


Rubygemsのインストール

Rubyのバージョンが「1.9」以降であれば、Ruby本体をインストールすると同時に、RubyGemsも標準ライブラリとしてインストールされます。

また、Unix系OSではデフォルトでRubyGemsパッケージが用意されています。
インストールはバイナリパッケージを取得すると「setup.rb」コマンドで行えます。


Rubygemsのアップデート

インストール後にRubyGemsが更新された場合は、以下のコマンドを実行するだけで最新版にアップデートできます。


gem update --system

Rubygemsの操作

gemコマンドフォーマット

RubyGemsは「gem」コマンドを利用します。

基本的な書式は以下のようになります。


gem <サブコマンド> [オプション] [パラメータ]

利用可能なサブコマンド、オプションやパラメータのリストは以下のコマンドで表示できます。


gem help <サブコマンドなどの文字列>

取得したライブラリの利用について

RubyGemsでインストールしたライブラリはバージョン管理が行われます。

そのため、インストールしたライブラリ利用する際は、「rubygems」をrequireする必要があります。

ただし、RubyGemsがインストールされていない環境では、動作しないスクリプトになってしまいます。

下記のように記述することで、エラーとさせることが一般的となっています。


begin
require "rubygems"
rescue LoadError
end

パッケージのインストール

下記コマンドですべてのインストール作業を自動的に実行してくれます。

依存関係のパッケージが必要な場合、それらも自動的にインストールします。


gem install --remote <パッケージ名>

頻繁に使用するオプションとしては、以下が挙げられます。

--remote 検索対象をリモートリポジトリのみに限定します。
--version バージョン 指定バージョンをインストール
--force 依存性チェックをスキップして強制インストール
--ignore-dependencies 依存パッケージをインストールしない

パッケージのアップデート

更新

インストール済みパッケージを最新版に更新します。

パッケージ名が省略された場合は、すべてのパッケージを更新します。


gem update [パッケージ名]

更新確認

outdated サブコマンドを使うと、更新が必要なパッケージを確認することができます。


gem outdated

旧バージョンを削除する

RubyGemsでは複数バージョンのパッケージがインストールできますので、パッケージを更新しただけでは旧バージョンは削除されません。

最新バージョンを残して旧バージョンをアンインストールするには、「cleanup」サブコマンドを使います。

「--dryrun」オプションで実行すると、実際の削除は行わずにアンインストールされるパッケージのバージョンが表示されます。


gem cleanup "--dryrun"
gem cleanup [パッケージ名]

パッケージのアンインストール

複数バージョンがインストールされている場合は、それらを列挙してどのバージョンを削除するかを尋ねてきます。

削除対象のパッケージが他のパッケージに依存している場合は、本当に削除して良いかを確認してきます。


gem uninstall <パッケージ>

パッケージの検索

名前に検索文字列を含むパッケージをリストアップしてくれます。

検索文字列を細かく指定したいなら、「query」サブコマンドを使って正規表現検索することもできます。


gem search --remote <検索文字列>
gem query --remote --name-matches <正規表現>

インストール済みパッケージの情報取得

インストールされているパッケージを確認するには、「search」コマンドを実行すればパッケージが列挙できます。


gem search

リポジトリについて

リモートリポジトリとはネットワーク上に存在するRubyGemsサーバーに存在するパッケージ群のことで、通常は "http://gems.rubyforge.org" に設定されています。


ローカルリポジトリはローカルファイルシステム上に存在するリポジトリで、リモートリポジトリからインストールしたパッケージは自動的にローカルリポジトリにコピーされます。


これは、自身がRubyGemsサーバーとなり、ローカルリポジトリにあるパッケージを他のマシンに供給するための仕組みになります。

「gem_server」コマンドを実行すると、サーバーとして動作させることが可能です。



関連ページ