- blogs:
- cles::blog

Bundler で gem を管理してみる

最近、Ruby でアプリを開発するためのチュートリアルを読んだり、Redmine のインストール方法を調べたりすると Bundler という gem 管理ソフトが使われていることが多くなってきたので、ちょっと本腰をいれて仕組みを調べてみることにしました。
Bundler は簡単に言えばアプリケーションごとに、必要な gem をインストールできるようになるソフトウェアです。通常の gem はシステム(というか、Ruby の環境)ごとに1つしかないので、自分が使いたいプロダクトが複数あったときに、それらが同じ gem だけれども違うバージョンを要求するような場合にプロダクトごとに gem の管理ができるようになります。逆に他のアプリを気にせずに、必要な gem をガンガンインストールできるようになるので管理が非常に楽になります。
以下、導入メモ。
† Bundler のインストール
Bundler 自体も gem で供給されているので、これだけは普通に gem を使ってインストールしておきます。
これを済ませると gem の代わりに bundle コマンドを使って環境固有の gem をインストールすることができるようになります。
† Bundler による環境固有の gem のインストール
bundler はアプリケーションのルートディレクトリにある Gemfile という設定ファイルを使うので、そのひな形を以下のコマンドで生成してやります。
中身は以下のような感じになっているので、必要な gem を列挙してやります。例えば nokogiri と mysql2 を使いたい場合は以下のような感じ。
Gemfile
このままではまだ gem はインストールされていないので、以下のコマンドを実行してインストールします。初回時に --path vendor/bundle をつけることにより、gem が vendor/bundle 以下にインストールされるので他の環境を汚さないようになります。gem に依存性がある場合には必要な gem も勝手にインストールされます。逆に Gemfile から必要がない gem を削除して clean を実行すると、gem が削除されます。
† bundler 経由で gem を require する
bundler で gem をインストールしても、アプリからは require しなければ利用できません。
Gemfile にある gem をまとめて require する場合には以下のようにすれば一撃で済ませることができるようです。
恥ずかしいことに、これまで Bundler と bundle の違いが分かっていませんでしたが、これでやっと分かるようになりました。
パッケージ管理を行うソフトウェアの名前が Bundler で、Bundler を使うためのコマンドが bundle なんですね。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/7655
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112948)
3 . 年次の人間ドックへ(112374)
4 . 2023 年分の確定申告完了!(1つめ)(111943)
5 . 三菱鉛筆がラミーを買収(111817)