LoginSignup
444
426

More than 5 years have passed since last update.

Bundler概要

Last updated at Posted at 2014-07-23

bundlerについて分かってる風になっていたので、一度整理します。

特徴

・Gemパッケージの種類やバージョンの管理
・複数PCで必要なGemパッケージをインストールする仕組みを提供
->チーム間で同一の開発環境を簡単に構築することが可能に。

運用方針

基本的に、gemコマンドでインストールするのはBundlerのみで、その他のgemパッケージは、Bundler経由でインストールするという方針。

gem install bundler

Gemインストールの流れ

GemfileにインストールするGemパッケージを記述し、

bundle install

を実行してインストールする。
※「Gemfile」に書かれたGemパッケージと、そのGemパッケージが依存しているGemパッケージを自動的に調べて全てインストールしてくれる。

よく使うBundlerのサブコマンド

コマンド 概要
bundle init Gemfileを生成
bundle install Gemfileに書かれたgemパッケージをインストール
bundle exec Bundlerでインストールされたgemパッケージを使用してコマンドを実行
bundle list インストール済みのgemパッケージの一覧を表示
bundle update インストール済みのgemパッケージのバージョンを更新

Gemパッケージの保存先

単純に

bundle install

と実行されると、rbenv利用下の場合、/Users/ユーザー名/.rbenv/versions/バージョン名/lib/ruby/gems/...以下にインストールされる

bundle install --path <フォルダ名>
とすれば、指定のフォルダにインストール先を指定できる。
たとえば、

bundle install --path vendor/bundle

と記述すると、railsアプリのルートディレクトリの下のvendor/bundleディレクトリにインストールされ、そのアプリケーションの中だけにインストールされる。
一度上のコマンドを実行すれば、Bundlerはインストール先を記憶するので次回以降は

bundle install

を実行するだけで毎回vendor/bundleディレクトリにインストールされる。
因みに、Bundlerはgemのインストール先を、railsアプリのルートディレクトリの下の、.bundle/configというファイルで記憶している。

個別のRailsアプリにインストールされているgemの一覧を見るには以下のコマンドを使うといい。

bundle list

Gemfileとは

インストールするGemパッケージの名前とバージョンを記述するファイル。

Gemfile.lockとは

インストールされたGemパッケージの名前とバージョンが記録されたファイル。
他の環境で同じアプリケーションの開発を行なう場合は、プログラムファイルに加えてこの「Gemfile.lock」ファイルを配布する。
そして他の環境で「bundle install」を実行すると、今度は「Gemfile.lock」ファイルが参照され、指定されたバージョンのGemパッケージがインストールされるようになる。


Gemfileに

source 'https://rubygems.org'

gem 'rails'

と記述し、

bundle install

すると、

  • actionmailer (4.1.4)
  • actionpack (4.1.4)
  • actionview (4.1.4)
  • activemodel (4.1.4)
  • activerecord (4.1.4)
  • activesupport (4.1.4)
  • arel (5.0.1.20140414130214)
  • builder (3.2.2)
  • bundler (1.6.3)
  • erubis (2.7.0)
  • hike (1.2.3)
  • i18n (0.6.11)
  • json (1.8.1)
  • mail (2.5.4)
  • mime-types (1.25.1)
  • minitest (5.4.0)
  • multi_json (1.10.1)
  • polyglot (0.3.5)
  • rack (1.5.2)
  • rack-test (0.6.2)
  • rails (4.1.4)
  • railties (4.1.4)
  • rake (10.3.2)
  • sprockets (2.12.1)
  • sprockets-rails (2.1.3)
  • thor (0.19.1)
  • thread_safe (0.3.4)
  • tilt (1.4.1)
  • treetop (1.4.15)
  • tzinfo (1.2.1)

↑上記gemに必要な依存関係を持つこれだけのgemを勝手にインストールしてくれる。

Railsアプリを作るとき


Railsアプリを作るとき、rails自体をbundleでインストールすると、railsを記述したGemfileと、railsアプリ内で作るGemfileの2つが存在することになってややこしいので、以下の手順でrails newすると良さげ。

bundle init

でGemfileを生成し、Gemfileに
gem rails
を記述し、

bundle install --path vendor/bundle

を実行。

ここで、

bundle exec rails new . --skip-bundle

と入力すると、カレントディレクトリにrailsアプリが生成される(Gemfileは上書きされる)ので、

bundle update

を実行すれば良い。

※「--skip-bundle」オプションをつけると、rails初期化時に余分なbundle installが走らないため、効率的なアプリ構築ができる。

参考

パーフェクト Ruby on Rails
http://www.amazon.co.jp/パーフェクト-Ruby-Rails-すがわら-まさのり/dp/4774165166

444
426
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
444
426