2011年6月1日水曜日

[Rails3] Bundlerを使ってGemファイルをインストール

実行環境:
Rails 3.0.7
Bundler 1.0.12
Rails3アプリケーションで必要な gem ファイルをインストールする場合、bundler を利用するととても便利です。

手順は簡単で、アプリケーションのルートディレクトリ(Rails.root)内にある Gemfile に必要な gem ファイルを記載し、bundle コマンドを実行すると Gemfile の記載に従ってインストールしてくれます。

Gemfileにインストールするgemファイルの情報を記載

実行モードを問わずインストールする場合はこんな感じで書く
#{Rails.root}/Gemfile
gem 'ruby-debug' gem 'ruby-debug19', :require => 'ruby-debug' gem 'jquery-rails', '>= 0.2.6'

特定の実行モードでインストールするときはこんな感じで書く
#{Rails.root}/Gemfile
group :development, :test do gem 'rspec' gem 'rspec-rails' end


bundle コマンドを実行してインストール

まずはカレントディレクトリをアプリケーションのルートに変更しておきます。bundle コマンドはカレントディレクトリの Gemfile を読み込むからです。

次にインストールする前に gem のインストール先についてぜひ考えておきましょう。つまりサーバ全体にインストールするか、それともアプリケーション内にインストールするかということです。


単純に
bundle install
とうつと、カレントディレクトリにあるGemfileの内容を元に ruby/gems 配下にインストールします。ですのでサーバ内の全環境にインストールします。

インストール先の情報を指定して
bundle install --path vendor/bundle
とすると、#{Rails.root}/vendor/bundle 配下にインストールされ、そのアプリケーションの中だけにインストールされることになります。(インストール先は別にこの名前じゃなくてもよいみたいですが…)

1つのサーバ内で1つのアプリケーションしかないのであればどちらでも大差ないですが、複数のアプリケーションが、複数の Rails のバージョンで動いていると、様々なバージョンの gem が混在することになって気持ち悪いです。なので、というかメンテナンス性という点からも、アプリケーションの中にインストールした方がよいかと思われます。

ちなみに一度、インストール先を指定して bundle install コマンドを実行すると、Rails.root 配下に .bundle/config というファイルが作成されます。
.bundle/config
--- BUNDLE_PATH: vendor/bundle BUNDLE_DISABLE_SHARED_GEMS: "1"
インストール先を記憶してくれているので、次回以降は単に
bundle install
とするだけで同じディレクトリにインストールしてくれます。


bundle でインストールされた gem ファイル一覧

アプリケーションのルートディレクトリ(Rails.root)に移動して
bundle list
コマンドを実行すると、bundleでインストールされたgemリストが表示されます。

Gems included by the bundle:
  * abstract (1.0.0)
  * actionmailer (3.0.7)
  * actionpack (3.0.7)
  * activemodel (3.0.7)
  * activerecord (3.0.7)
  * activeresource (3.0.7)
  * activeresupport (3.0.7)
  * arel (2.0.9)
  * builder (2.1.2)
  * bundler (1.0.12)
  * erubis (2.6.6)
   (以下略)

0 件のコメント:

コメントを投稿