Docs header transparent bg

bundle config

bundle-config - Bundlerの設定オプションを設定します

bundle config list
bundle config [get] NAME
bundle config [set] NAME VALUE
bundle config unset NAME

説明

このコマンドを使用すると、Bundlerの設定システムと対話できます。

Bundlerは、以下の順序で設定を読み込みます。

  1. ローカル設定 (<project_root>/.bundle/config または $BUNDLE_APP_CONFIG/config)
  2. 環境変数 (ENV)
  3. グローバル設定 (~/.bundle/config)
  4. Bundlerのデフォルト設定

bundle config listを実行すると、現在のバンドルに関するすべてのBundler設定とその設定場所の一覧が表示されます。

bundle config get <name>を実行すると、その設定値とその設定場所が表示されます。

bundle config set <name> <value>を実行すると、ローカルアプリケーション内から実行されている場合はlocal設定が、それ以外の場合はglobal設定がデフォルトで設定されます。下記の--localオプションと--globalオプションを参照してください。

bundle config set --local <name> <value>を実行すると、ローカルアプリケーションのディレクトリにその設定が設定されます。設定は<project_root>/.bundle/configに保存されます。BUNDLE_APP_CONFIGが設定されている場合、設定は$BUNDLE_APP_CONFIG/configに保存されます。

bundle config set --global <name> <value>を実行すると、現在のユーザーとして実行されるすべてのバンドルに対して、指定された値が設定されます。設定は~/.bundle/configに保存されます。既にnameが設定されている場合、nameは上書きされ、ユーザーに警告が表示されます。

bundle config unset <name>を実行すると、ローカルとグローバルの両方から設定が削除されます。

bundle config unset --global <name>を実行すると、ユーザー設定からのみ設定が削除されます。

bundle config unset --local <name>を実行すると、ローカルアプリケーションからのみ設定が削除されます。

BUNDLE_IGNORE_CONFIG環境変数を設定してBundlerを実行すると、すべての設定が無視されます。

オプションの記憶

bundle installまたはBundlerランタイムに渡されたフラグ(--path foo--without productionなど)は、コマンド間で記憶され、ローカルアプリケーションの設定(通常は./.bundle/config)に保存されます。

ただし、これはBundler 3で変更されるため、この動作に依存しない方が良いでしょう。これらのオプションを記憶する必要がある場合は、bundle configを使用して設定する方が良いでしょう(例:bundle config set --local path foo)。

設定可能なオプションは以下のとおりです。

bin
ディレクトリを作成し(デフォルトは~/bin)、gemの実行可能ファイルをそこに配置します。これらの実行可能ファイルはBundlerのコンテキストで実行されます。使用する場合、このディレクトリを環境のPATH変数に追加する必要があるかもしれません。例えば、rails gemにrails実行可能ファイルが含まれている場合、このフラグによりbin/rails実行可能ファイルが作成され、参照されるすべての依存関係がバンドルされたgemを使用して解決されるようになります。
deployment
デプロイモードでは、Bundlerはproductionで使用するためのバンドルを「ロールアウト」します。developmentまたはtest環境でこのオプションを有効にするかどうかを注意深く確認してください。
only
指定されたグループのgemのみをインストールするグループのスペース区切りのリスト。
path
指定されたgemをインストールする場所。これはRubygemsの設定をデフォルトとして使用します。BundlerはRubygemsとこの場所を共有するため、gem install ...もそこにgemをインストールします。したがって、--path ...設定なしでインストールされたgemは、gem listを呼び出すことで表示されます。それに応じて、他の場所にインストールされたgemは一覧表示されません。
without
インストール中にスキップするgemを参照するグループのスペース区切りのリスト。
with
インストール中に含めるgemを参照するオプションのグループのスペース区切りのリスト。

ビルドオプション

bundle configを使用して、Bundlerが特定のgemをインストールしようとするたびにgemインストーラーに渡すフラグをBundlerに渡すことができます。

非常に一般的な例として、mysql gemは、Snow Leopardユーザーがmysql_config実行可能ファイルを見つける場所を指定するために、gem installに設定フラグを渡す必要があります。

gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

その実行可能ファイルの特定の場所はマシンによって異なるため、これらのフラグをマシンごとに指定できます。

bundle config set --global build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

このコマンドを実行した後、Bundlerがmysql gemをインストールする必要があるたびに、指定したフラグが渡されます。

設定キー

Bundlerの設定キーには、標準形式と環境変数形式の2つの形式があります。

bundle install(1)--withoutフラグを渡すと、Gemfile(5)に指定された特定のグループのインストールがBundlerによって防止されます。Bundlerはこの値をapp/.bundle/configに保持するため、Bundler.setupへの呼び出しで、インストールしなかったGemfileからのgemの検索が試行されません。さらに、bundle install(1)への後続の呼び出しでは、この設定が記憶され、それらのグループがスキップされます。

この設定の標準形式は"without"です。標準形式を環境変数形式に変換するには、大文字に変換し、BUNDLE_をプレフィックスとして追加します。"without"の環境変数形式はBUNDLE_WITHOUTです。

設定キーのピリオドは、環境変数を介して設定する場合は2つのアンダースコアに置き換える必要があります。設定キーlocal.rackは、環境変数BUNDLE_LOCAL__RACKになります。

使用可能なキーの一覧

以下は、すべての設定キーとその目的の一覧です。それらの動作の詳細については、bundle install(1)を参照してください。

  • allow_deployment_source_credential_changes (BUNDLE_ALLOW_DEPLOYMENT_SOURCE_CREDENTIAL_CHANGES): デプロイモードの場合、gemのソースの資格情報を変更することを許可します。例: https://some.host.com/gems/path/ -> https://user_name:password@some.host.com/gems/path
  • allow_offline_install (BUNDLE_ALLOW_OFFLINE_INSTALL): ネットワークアクセスなしでインストールする場合に、Bundlerがキャッシュされたデータを使用することを許可します。
  • auto_clean_without_path (BUNDLE_AUTO_CLEAN_WITHOUT_PATH): 明示的なpathが設定されておらず、Bundlerがシステムgemにインストールしていない場合に、インストール後にbundle cleanを自動的に実行します。
  • auto_install (BUNDLE_AUTO_INSTALL): gemが不足している場合に、bundle installを自動的に実行します。
  • bin (BUNDLE_BIN): バンドル内のgemから実行可能ファイルを指定されたディレクトリにインストールします。デフォルトはfalseです。
  • cache_all (BUNDLE_CACHE_ALL): path gemとgit gemを含むすべてのgemをキャッシュします。これはBundler 1とBundler 2では明示的に設定する必要がありますが、Bundler 3ではデフォルトになります。
  • cache_all_platforms (BUNDLE_CACHE_ALL_PLATFORMS): すべてのプラットフォームのgemをキャッシュします。
  • cache_path (BUNDLE_CACHE_PATH): bundle packageの実行時にBundlerがキャッシュされたgemを配置するディレクトリ、およびgemのインストール時にBundlerが参照するディレクトリ。デフォルトはvendor/cacheです。
  • clean (BUNDLE_CLEAN): bundle install後にBundlerがbundle cleanを自動的に実行するかどうか。
  • console (BUNDLE_CONSOLE): bundle consoleが起動するコンソール。デフォルトはirbです。
  • default_install_uses_path (BUNDLE_DEFAULT_INSTALL_USES_PATH): 明示的な--path引数なしでbundle installを実行した場合、.bundleにgemをインストールするかどうか。
  • deployment (BUNDLE_DEPLOYMENT): Gemfileの変更を許可しません。Gemfileが変更され、lockfileが更新されていない場合、Bundlerコマンドの実行がブロックされます。
  • disable_checksum_validation (BUNDLE_DISABLE_CHECKSUM_VALIDATION): RubyGemsによって提供されたチェックサムと一致しない場合でも、gemのインストールを許可します。
  • disable_exec_load (BUNDLE_DISABLE_EXEC_LOAD): bundle execでBundlerがloadを使用して実行可能ファイルをインプロセスで起動するのを停止します。
  • disable_local_branch_check (BUNDLE_DISABLE_LOCAL_BRANCH_CHECK): Gemfileに指定されたブランチがない場合でも、Bundlerがローカルのgitオーバーライドを使用することを許可します。
  • disable_local_revision_check (BUNDLE_DISABLE_LOCAL_REVISION_CHECK): lockfileに存在するリビジョンがリポジトリに存在するかどうかを確認せずに、Bundlerがローカルのgitオーバーライドを使用することを許可します。
  • disable_shared_gems (BUNDLE_DISABLE_SHARED_GEMS): BundlerがRubyGemsの通常の場所にインストールされたgemにアクセスするのを停止します。
  • disable_version_check (BUNDLE_DISABLE_VERSION_CHECK): Bundlerがrubygems.orgで新しいBundlerバージョンが利用可能かどうかを確認するのを停止します。
  • force_ruby_platform (BUNDLE_FORCE_RUBY_PLATFORM): 現在のマシンのプラットフォームを無視し、rubyプラットフォームのgemのみをインストールします。その結果、ネイティブ拡張機能を持つgemはソースからコンパイルされます。
  • frozen (BUNDLE_FROZEN): Gemfileの変更を許可しません。Gemfileが変更され、lockfileが更新されていない場合、Bundlerコマンドの実行がブロックされます。--deploymentを使用すると、デフォルトでtrueになります。
  • gem.github_username (BUNDLE_GEM__GITHUB_USERNAME): bundle gemコマンドを使用して新しいgemを作成する際に、READMEファイルで使用されるGitHubのユーザー名または組織を設定します。明示的な--github-usernameフラグをbundle gemに渡すことで上書きできます。
  • gem.push_key (BUNDLE_GEM__PUSH_KEY): プライベートgemstashサーバーを使用する際に、rake releaseコマンドでgem push--keyパラメーターを設定します。
  • gemfile (BUNDLE_GEMFILE): BundlerがGemfileとして使用するファイルの名前。このファイルの場所は、プロジェクトのルートも設定します。これは、Gemfile内の相対パスの解決など、さまざまな用途に使用されます。デフォルトでは、Bundlerは現在の作業ディレクトリから上方に検索して、Gemfileを見つけます。
  • global_gem_cache (BUNDLE_GLOBAL_GEM_CACHE): BundlerがすべてのgemをローカルのRubyインストールではなくグローバルにキャッシュするかどうか。
  • ignore_funding_requests (BUNDLE_IGNORE_FUNDING_REQUESTS): 設定されている場合、資金提供のリクエストは表示されません。
  • ignore_messages (BUNDLE_IGNORE_MESSAGES): 設定されている場合、インストール後のメッセージは表示されません。単一のgemをサイレントにするには、ignore_messages.httparty trueのようにドット表記を使用します。
  • init_gems_rb (BUNDLE_INIT_GEMS_RB): bundle initを実行するときに、Gemfileではなくgems.rbを生成します。
  • jobs (BUNDLE_JOBS): Bundlerが並列でインストールできるgemの数。デフォルトは使用可能なプロセッサの数です。
  • no_install (BUNDLE_NO_INSTALL): bundle packageがgemのインストールをスキップするかどうか。
  • no_prune (BUNDLE_NO_PRUNE): キャッシュ時にBundlerが期限切れのgemを削除せずに残しておくかどうか。
  • only (BUNDLE_ONLY): 指定されたグループのgemのみをインストールするグループのスペース区切りのリスト。
  • path (BUNDLE_PATH): $GEM_HOMEまたは$GEM_PATHの値に関係なく、バンドル内のすべてのgemが配置されるディスク上の場所。この場所にないバンドルgemは、bundle installによってインストールされます。デフォルトはGem.dirです。--deploymentを使用すると、デフォルトはvendor/bundleになります。
  • path.system (BUNDLE_PATH__SYSTEM): Bundlerがgemをデフォルトのシステムパス(Gem.dir)にインストールするかどうか。
  • path_relative_to_cwd (BUNDLE_PATH_RELATIVE_TO_CWD) --pathGemfileではなくCWDを基準とした相対パスにします。
  • plugins (BUNDLE_PLUGINS): Bundlerの実験的なプラグインシステムを有効にします。
  • prefer_patch (BUNDLE_PREFER_PATCH): アップデート時に次のパッチバージョンのみへの更新を優先します。bundle update コマンドを bundler update --patch と同等にします。
  • print_only_version_number (BUNDLE_PRINT_ONLY_VERSION_NUMBER): bundler --version からバージョン番号のみを出力します。
  • redirect (BUNDLE_REDIRECT): ネットワークリクエストで許可されるリダイレクトの数です。デフォルトは5です。
  • retry (BUNDLE_RETRY): ネットワークリクエストの失敗を再試行する回数です。デフォルトは3です。
  • setup_makes_kernel_gem_public (BUNDLE_SETUP_MAKES_KERNEL_GEM_PUBLIC): RubyGemsが非公開として宣言している場合でも、Bundler.setup によって Kernel#gem メソッドを公開状態にします。
  • shebang (BUNDLE_SHEBANG): 生成されたビンスタブで呼び出すプログラム名です。デフォルトは、ビンスタブの生成に使用されたrubyインストール名です。
  • silence_deprecations (BUNDLE_SILENCE_DEPRECATIONS): 次のメジャーバージョンで変更される動作に関する非推奨警告をBundlerが抑制するかどうかを指定します。
  • silence_root_warning (BUNDLE_SILENCE_ROOT_WARNING): root権限でgemをインストールする際にBundlerが出力する警告を抑制します。
  • ssl_ca_cert (BUNDLE_SSL_CA_CERT): 信頼できるCAのPEM形式の証明書を複数含む指定されたCA証明書ファイルまたはフォルダへのパスです。
  • ssl_client_cert (BUNDLE_SSL_CLIENT_CERT): PEM形式でX.509クライアント証明書とキーを含む指定されたファイルへのパスです。
  • ssl_verify_mode (BUNDLE_SSL_VERIFY_MODE): BundlerがHTTPSリクエストを行う際に使用するSSL検証モードです。デフォルトはピアの検証です。
  • system_bindir (BUNDLE_SYSTEM_BINDIR): RubyGemsがビンスタブをインストールする場所です。デフォルトはGem.bindirです。
  • timeout (BUNDLE_TIMEOUT): ネットワークリクエストのタイムアウトまでの秒数です。デフォルトは10です。
  • update_requires_all_flag (BUNDLE_UPDATE_REQUIRES_ALL_FLAG): すべてを更新する必要がある場合、bundle update--all フラグの指定を必須とし、オプションなしでbundle update を実行することを許可しません。
  • user_agent (BUNDLE_USER_AGENT): BundlerがAPIリクエストに含めるカスタムユーザーエージェントフラグメントです。
  • version (BUNDLE_VERSION): Bundler環境下で実行する際に使用するBundlerのバージョンです。デフォルトはlockfileです。systemまたはx.y.zを指定することもできます。lockfileGemfile.lockに指定されたBundlerバージョンを使用し、systemはシステムのBundlerバージョンを使用し、x.y.zは指定されたバージョンのBundlerを使用します。
  • with (BUNDLE_WITH): Bundlerがインストールするgemのグループをコロン(:)で区切ったリストです。
  • without (BUNDLE_WITHOUT): Bundlerがインストールしないgemのグループをコロン(:)で区切ったリストです。

一般的に、これらの設定は、bundle install(1)またはbundle cache(1)コマンドに該当するフラグを使用して、アプリケーションごとに設定する必要があります。

環境変数またはbundle configを使用してグローバルに設定できます。どちらを使用するかは、設定によって異なります。両方を使用する場合、環境変数がグローバル設定よりも優先されます。

ローカルGitリポジトリ

Bundlerでは、リモートバージョンを使用する代わりに、ローカルのGitリポジトリに対して作業することもできます。これは、ローカルオーバーライドを設定することで実現できます。

bundle config set --local local.GEM_NAME /path/to/local/git/repository

たとえば、ローカルのRackリポジトリを使用するには、開発者は次のように呼び出すことができます。

bundle config set --local local.rack ~/Work/git/rack

これで、リモートGitリポジトリをチェックアウトする代わりに、ローカルオーバーライドが使用されます。パスソースと同様に、ローカルGitリポジトリに変更があると、Bundlerによって自動的に変更が取得されます。つまり、ローカルGitリポジトリへのコミットによって、Gemfile.lockのリビジョンがローカルGitリポジトリのリビジョンに更新されます。これは、Gitサブモジュールと同じ注意が必要です。リモートにプッシュする前に、ローカルオーバーライドがプッシュされていることを確認する必要があります。そうでないと、ローカルマシンにのみ存在するコミットを指してしまう可能性があります。ユーザー名とパスワードもCGIエスケープする必要があります。

Bundlerは、開発者が無効な参照を使用して作業しないように、多くのチェックを実行します。特に、この機能を使用するには、開発者がGemfileにブランチを指定することを強制します。Gemfileに指定されたブランチとローカルGitリポジトリの現在のブランチが一致しない場合、Bundlerは処理を中止します。これにより、開発者は常に正しいブランチに対して作業し、異なるブランチへの誤ったロックを防ぐことができます。

最後に、Bundlerは、Gemfile.lockの現在のリビジョンがローカルGitリポジトリに存在することを確認します。これにより、Bundlerはリモートの最新の変更を取得することを強制します。

Gemソースのミラー

Bundlerは、gemソースをミラーでオーバーライドすることをサポートしています。これにより、Gemfileでrubygems.orgをgemソースとして設定しながら、ミラーを使用してgemを取得できます。

bundle config set --global mirror.SOURCE_URL MIRROR_URL

たとえば、https://rubygems.orgのミラーをhttps://example.orgで使用するには

bundle config set --global mirror.https://rubygems.org https://example.org

各ミラーには、フォールバックタイムアウト設定も用意されています。ミラーがフォールバックタイムアウト内に応答しない場合、Bundlerはミラーの代わりに元のサーバーを使用しようとします。

bundle config set --global mirror.SOURCE_URL.fallback_timeout TIMEOUT

たとえば、3秒後にrubygems.orgにフォールバックするには

bundle config set --global mirror.https://rubygems.org.fallback_timeout 3

デフォルトのフォールバックタイムアウトは0.1秒ですが、現在の設定では整数秒(例:1、15、30)しか受け入れることができません。

Gemソースの認証情報

Bundlerを使用すると、任意のgemソースの認証情報を設定できます。これにより、秘密情報をGemfileに含める必要がなくなります。

bundle config set --global SOURCE_HOSTNAME USERNAME:PASSWORD

たとえば、gems.longerous.comにあるgemソースのユーザーclaudetteの認証情報を保存するには、次のように実行します。

bundle config set --global gems.longerous.com claudette:s00pers3krit

または、次のように環境変数として認証情報を設定できます。

export BUNDLE_GEMS__LONGEROUS__COM="claudette:s00pers3krit"

HTTP(S) URLを持つgitソースのgemの場合、次のように認証情報を指定できます。

bundle config set --global https://github.com/rubygems/rubygems.git username:password

または、次のように環境変数として認証情報を設定できます。

export BUNDLE_GITHUB__COM=username:password

これは、パーソナルOAuthトークンを使用できるGitHubなどのホスト上のプライベートリポジトリに特に便利です。

export BUNDLE_GITHUB__COM=abcd0123generatedtoken:x-oauth-basic

--parseableフラグを使用しない限り、bundle config listbundle config getなどの情報コマンドでは、設定された認証情報は削除されます。これは、Bundlerの出力をコピーアンドペーストする際に、意図せず認証情報を漏洩することを防ぐためです。

また、有効な環境変数名と有効なホスト名の間に健全なマッピングを保証するために、Bundlerは次の変換を行います。

  • ホスト名内のすべての-文字は、対応する環境変数でトリプルアンダースコア(___)にマッピングされます。

  • ホスト名内のすべての.文字は、対応する環境変数でダブルアンダースコア(__)にマッピングされます。

つまり、my.gem-host.comという名前のgemサーバーがある場合、ENVを通じて認証情報を設定するには、BUNDLE_MY__GEM___HOST__COM変数を使用する必要があります。

Bundlerディレクトリの構成

Bundlerのホーム、設定、キャッシュ、プラグインディレクトリは、環境変数を使用して構成できます。Bundlerのホームディレクトリのデフォルトの場所は~/.bundleであり、すべてのディレクトリはデフォルトでここから継承します。以下は、使用可能な環境変数とそのデフォルト値の概要です。

BUNDLE_USER_HOME : $HOME/.bundle
BUNDLE_USER_CACHE : $BUNDLE_USER_HOME/cache
BUNDLE_USER_CONFIG : $BUNDLE_USER_HOME/config
BUNDLE_USER_PLUGIN : $BUNDLE_USER_HOME/plugin
GitHubでこのドキュメントを編集する (エラーを見つけた場合、または不足しているものがある場合)