bundle-config
- Bundlerの設定オプションを設定します
bundle config
list
bundle config
[get] NAME
bundle config
[set] NAME VALUE
bundle config
unset NAME
このコマンドを使用すると、Bundlerの設定システムと対話できます。
Bundlerは、以下の順序で設定を読み込みます。
<project_root>/.bundle/config
または $BUNDLE_APP_CONFIG/config
)ENV
)~/.bundle/config
)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
production
で使用するためのバンドルを「ロールアウト」します。development
またはtest
環境でこのオプションを有効にするかどうかを注意深く確認してください。only
path
gem install ...
もそこにgemをインストールします。したがって、--path ...
設定なしでインストールされたgemは、gem list
を呼び出すことで表示されます。それに応じて、他の場所にインストールされたgemは一覧表示されません。without
with
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
) --path
をGemfile
ではなく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
を指定することもできます。lockfile
はGemfile.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
を使用してグローバルに設定できます。どちらを使用するかは、設定によって異なります。両方を使用する場合、環境変数がグローバル設定よりも優先されます。
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はリモートの最新の変更を取得することを強制します。
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)しか受け入れることができません。
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 list
やbundle config get
などの情報コマンドでは、設定された認証情報は削除されます。これは、Bundlerの出力をコピーアンドペーストする際に、意図せず認証情報を漏洩することを防ぐためです。
また、有効な環境変数名と有効なホスト名の間に健全なマッピングを保証するために、Bundlerは次の変換を行います。
ホスト名内のすべての-
文字は、対応する環境変数でトリプルアンダースコア(___
)にマッピングされます。
ホスト名内のすべての.
文字は、対応する環境変数でダブルアンダースコア(__
)にマッピングされます。
つまり、my.gem-host.com
という名前のgemサーバーがある場合、ENVを通じて認証情報を設定するには、BUNDLE_MY__GEM___HOST__COM
変数を使用する必要があります。
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