Bundler.setup

Bundler.setup

読み込みパスを設定することで、Gemfile内の全ての依存関係がrequire可能になります。

require 'rubygems'
require 'bundler/setup'
require 'nokogiri'

下記は、指定したグループのみを読み込みパスへ追加しています。 もし、デフォルトグループのGemが必要なのであれば、:defaultを含めて下さい。

require 'rubygems'
require 'bundler'
Bundler.setup(:default, :ci)
require 'nokogiri'

Bundlerのグループ

互換性

Ruby 2.0とRubygems 2.0は両方とも、Bundler 1.3とそれ以降のバージョンを必要とします。 もし、Bundlerとあなたのシステム間の互換性について確認をしたいのであれば、 互換性リストを参照して下さい。

Learn More: Compatibility

Bundlerを使用して

Bundlerは、RubyがGemfile内の全てのGem(と、それら全ての依存性)を見つけることが出来る事を確認します。 もし、あなたのアプリケーションがRails 3なのであれば、アプリケーションには既にBundlerを実行するのに必要なコードが含まれています。 もし、Rails 2.3のアプリケーションであれば、下記を参照して下さい。

Setting up Bundler in Rails 2.3

別の種類のアプリケーション(Sinatraのような)であれば、 何らかのGemのrequireをする前に、Bundlerのセットアップ(set up)が必要になります。 アプリケーションが一番最初に読み込むファイル(Sinatraであれば、require 'sinatra'を呼び出すファイル)は、 次のようになります。

require 'rubygems'
require 'bundler/setup'

これは自動的にGemfileを発見し、Gemfile内に指定されている全てのGemをRubyで利用可能にしてくれます。 (技術的な観点から言えば、"読み込みパス上"にそれらのGemが配置されます。) これは、require 'rubygems'に特別な力を与えていると考えることも出来ます。

これで、あなたのRubyコードが必要とするGemを、requireすることが可能になります。 例えば、require 'sinatra'を有効にすることが出来ます。 もし、アプリケーションが多くの依存性を持つ場合、あなたは「Gemfileの全てのGemをrequireしたい」と考えるでしょう。 これを行うには、require 'bundler/setup'のすぐ後ろに、下記のコードを配置して下さい。

Bundler.require(:default)

我々のGemfileを例にとると、この行は実際には次のように評価されます。

require 'rails'
require 'rack-cache'
require 'nokogiri'

鋭い読者であれば、rack-cacheのGemをrequireする正しい方法は、require 'rack-cache'では無く、 require 'rack/cache'であることにお気づきでしょう。 Bunlderにrequire 'rack/cache'を使用することを伝えるために、Gemfileを更新して下さい。

source 'http://rubygems.org'

gem 'rails', '3.0.0.rc'
gem 'rack-cache', :require => 'rack/cache'
gem 'nokogiri', '~> 1.4.2'

このような小さなGemfileであれば、我々はBundler.requireを使用するのではなく、 手動でそのGemをrequireするようにアドバイスすることでしょう。 (特に、Gemfile内に:require指定子を置く必要がある場合) 巨大なGemfileの場合、Bundler.requireを使用することで、 多くのrequireを繰り返し指定することを省くことが出来ます。

 Back to top

© 2010 - 2017 STUDIO KINGDOM