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」コマンドを実行すると、サーバーとして動作させることが可能です。