Docs header transparent bg

Gemグループの管理方法

依存関係をグループ化することで、グループ全体に対して操作を実行できます。

# These gems are in the :default group
gem 'nokogiri'
gem 'sinatra'

gem 'wirble', group: :development

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

group :test, :development do
  gem 'capybara'
  gem 'rspec-rails'
end

gem 'cucumber', group: [:cucumber, :test]

リストされたグループ以外のすべてのGemをインストールするようにBundlerを設定します。少なくとも1つの除外されていないグループ内のGemはインストールされます。

$ bundle config set --local without test development

特定のグループのGemをrequireします。名前付きグループ外のGemは`:default`グループに含まれることに注意してください。

Bundler.require(:default, :development)

デフォルトのGemと、現在のRails環境と同じ名前のグループのGemをrequireします。

Bundler.require(:default, Rails.env)

ロードパスに追加するGemのグループを制限します。これらのグループ内のGemのみがrequire可能です。ただし、`Bundler.setup`は一度しか呼び出せないことに注意してください。後続の呼び出しはすべてno-opです。特に、`bundle exec`を通してスクリプトを実行すると`Bundler.setup`が既に呼び出されるため、ユーザーコード内のそれ以降の呼び出しは無視されます。`bundle exec`によってロードされるグループを制御するには、`BUNDLE_WITH`と`BUNDLE_WITHOUT`の設定を使用できます。

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

詳細:Bundler.setup

オプショングループと`BUNDLE_WITH`

`group :name, optional: true do`を使用してグループをオプションとしてマークし、`bundle config set --local with name`を使用してオプショングループのインストールを選択できます。

依存関係のグループ化

特定の環境でのみ意味のあるGemのグループがいくつかある場合があります。たとえば、アプリケーションを(初期段階では)SQLiteを使用して開発し、`mysql2`または`pg`を使用してデプロイする場合があります。この例では、開発マシンにMySQLまたはPostgresがインストールされていない可能性があり、Bundlerにスキップさせたい場合があります。

これを行うには、依存関係をグループ化できます。

source 'https://rubygems.org'

gem 'rails', '3.2.2'
gem 'rack-cache', require: 'rack/cache'
gem 'nokogiri', '~> 1.4.2'

group :development do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

開発では、Bundlerに`production`グループをスキップするように指示できます。

$ bundle config set --local without production

Bundlerはフラグを`APP_ROOT/.bundle/config`に保存し、次回`bundle install`を実行すると、production Gemをスキップします。同様に、`bundler/setup`をrequireすると、BundlerはこれらのグループのGemを無視します。Bundlerによって保存されたすべての設定は`bundle config`を実行することで確認できます。これにより、グローバル設定(`~/.bundle/config`に保存)と環境変数で設定された設定も出力されます。Bundlerの設定に関する詳細については、以下を参照してください:bundle_config

`Bundler.require`のパラメータを通じて、自動的にrequireするグループを指定することもできます。`:default`グループには、どのグループにもリストされていないすべてのGemが含まれます。`Bundler.require(:default, :development)`を呼び出すと、Bundlerは`:default`グループのすべてのGemと`:development`グループのGemを`require`します。

デフォルトで、Railsで生成されたアプリケーションは`application.rb`で`Bundler.require(:default, Rails.env)`を呼び出します。これにより、`Gemfile`のグループがRails環境にリンクされます。Rails環境にリンクされていない他のグループを使用する場合は、自動的にrequireする場合は`Bundler.require`の呼び出しに追加できます。

いつでもGemのグループを`Bundler.require`から除外して、アプリケーションの適切な場所でRubyの`require`を使用して手動でrequireできます。特定のGemをrequireするのに時間がかかり、アプリケーションの起動時に毎回必要ない場合に、この方法をとる場合があります。

エラーを見つけた場合、または何かが不足していることに気づいた場合は、GitHubでこのドキュメントを編集してください