田舎の技術者が奮闘中

php ruby node.js javascript などのスクリプト言語とサーバー(Chef、Vagrant)に関して書きます。

bundler入門

今まで何気にbundlerを使っていたが、あまり詳しく知らなかったので、勉強+ブログ更新がてら再度勉強することにしました。
といっても本サイトをコピペするだけですけど。。。

まずはじめに

bundlerをインストールします

gem install bundler

プロジェクトルートに「Gemfile」を作成して設置します。

Gemfileの編集

作成した「Gemfile」にURLを指定します

以下の3つのどれでもいいみたいです。gemのDL先の指定ですね。

source "http://rubygems.org"
source "http://gems.rubyforge.org"
source "http://gemcutter.org"

インストールしたいパッケージを追加する

とりあえず「rails」を入れときます

gem "rails", "3.2.1"

編集完了したらインストールする

$ bundle install

その他の設定

バージョン番号など、必要なgemsを宣言します。構文を使い使用するバージョンを指定する

ちょっと「~」(チルダ)の使い方が特殊なぐらいで、簡単に指定できます。

#何も指定なしだったら、最新をインストール
gem "nokogiri"
# 指定したバージョンがインストールされる
gem "rails", "3.0.0.beta3"
# バージョン1.0以上をインストール
gem "rack",  ">=1.0"
# 例を一応出します。
# "~>2.0.3"は">=2.0.3" と "<2.1" の間にマッチする。
# "~>2.1"は">=2.1" と "<3.0" の間にマッチする。
# "~>2.2.beta" は "2.2.beta.12" のようにマッチする。
gem "thin",  "~>1.1"

gemのメインファイルが、gem名と異なる場合は、それを要求する方法を指定する

gem "rspec", :require => "spec"
gem "sqlite3-ruby", "1.2.5", :require => "sqlite3"

Gitを指定することも可能

gem "nokogiri", :git => "git://github.com/tenderlove/nokogiri.git", :branch => "1.4"

group化する

gemをグループ分けし環境でgemの使い分けができます。

gem "wirble", :group => :development

group :test do
  gem "rspec"
  gem "faker"
end

グループを除外してインストールすることができます。
これによって、本稼働時のインストールとテスト時のインストールを使い分けることができます。

$ bundle install --without test development


ちなみにGemfileはデフォルトで「group: assets」となっている。(rails3.2)
最初勘違いしたのだが「assets」は本番環境で読み込むんだったら、「production」じゃないか?と思ったら
じつは「application.rb」で

Bundler.require(*Rails.groups(:assets => %w(development test)))

ってなっていました、これで「development test」では「assets」は読み込まないってなってたんですね・・・
しらなかったorz

まとめ

まだ理解していないところが多いですが、今回はここまで!
時間があるときに、また追記します。