1BUNDLE-CONFIG(1)                                              BUNDLE-CONFIG(1)
2
3
4

NAME

6       bundle-config - Set bundler configuration options
7

SYNOPSIS

9       bundle config list
10       bundle config [get] NAME
11       bundle config [set] NAME VALUE
12       bundle config unset NAME
13

DESCRIPTION

15       This  command  allows you to interact with Bundler´s configuration sys‐
16       tem.
17
18       Bundler loads configuration settings in this order:
19
20       1.  Local  config  (<project_root>/.bundle/config  or  $BUNDLE_APP_CON‐
21           FIG/config)
22
23       2.  Environmental variables (ENV)
24
25       3.  Global config (~/.bundle/config)
26
27       4.  Bundler default config
28
29
30
31       Executing  bundle config list will print a list of all bundler configu‐
32       ration for the current bundle, and where that configuration was set.
33
34       Executing bundle config get <name> will print the value of that config‐
35       uration setting, and where it was set.
36
37       Executing  bundle  config  set <name> <value> defaults to setting local
38       configuration if executing from within a local  application,  otherwise
39       it  will set global configuration. See --local and --global options be‐
40       low.
41
42       Executing bundle config set --local <name> <value> will set  that  con‐
43       figuration  in  the directory for the local application. The configura‐
44       tion  will  be  stored  in   <project_root>/.bundle/config.   If   BUN‐
45       DLE_APP_CONFIG  is  set,  the  configuration  will  be  stored in $BUN‐
46       DLE_APP_CONFIG/config.
47
48       Executing bundle config set --global <name> <value> will set that  con‐
49       figuration  to the value specified for all bundles executed as the cur‐
50       rent user. The configuration will be  stored  in  ~/.bundle/config.  If
51       name already is set, name will be overridden and user will be warned.
52
53       Executing  bundle  config unset <name> will delete the configuration in
54       both local and global sources.
55
56       Executing bundle config unset --global <name> will delete the  configu‐
57       ration only from the user configuration.
58
59       Executing bundle config unset --local <name> will delete the configura‐
60       tion only from the local application.
61
62       Executing bundle with the BUNDLE_IGNORE_CONFIG environment variable set
63       will cause it to ignore all configuration.
64

REMEMBERING OPTIONS

66       Flags  passed  to bundle install or the Bundler runtime, such as --path
67       foo or --without production, are remembered between commands and  saved
68       to your local application´s configuration (normally, ./.bundle/config).
69
70       However,  this will be changed in bundler 3, so it´s better not to rely
71       on this behavior. If these options must be remembered, it´s  better  to
72       set  them  using  bundle  config  (e.g., bundle config set --local path
73       foo).
74
75       The options that can be configured are:
76
77       bin    Creates a directory (defaults to ~/bin) and place  any  executa‐
78              bles from the gem there. These executables run in Bundler´s con‐
79              text. If used, you might add this  directory  to  your  environ‐
80              ment´s  PATH variable. For instance, if the rails gem comes with
81              a rails executable, this flag will create a bin/rails executable
82              that ensures that all referred dependencies will be resolved us‐
83              ing the bundled gems.
84
85       deployment
86              In deployment mode, Bundler will ´roll-out´ the bundle for  pro‐
87              duction use. Please check carefully if you want to have this op‐
88              tion enabled in development or test environments.
89
90       only   A space-separated list of groups to install  only  gems  of  the
91              specified groups.
92
93       path   The  location to install the specified gems to. This defaults to
94              Rubygems´ setting. Bundler shares this location  with  Rubygems,
95              gem  install  ... will have gem installed there, too. Therefore,
96              gems installed without a --path ...  setting  will  show  up  by
97              calling gem list. Accordingly, gems installed to other locations
98              will not get listed.
99
100       without
101              A space-separated list of groups referencing gems to skip during
102              installation.
103
104       with   A  space-separated  list  of optional groups referencing gems to
105              include during installation.
106

BUILD OPTIONS

108       You can use bundle config to give Bundler the flags to pass to the  gem
109       installer every time bundler tries to install a particular gem.
110
111       A  very  common  example, the mysql gem, requires Snow Leopard users to
112       pass configuration flags to gem install to specify where  to  find  the
113       mysql_config executable.
114
115
116
117           gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
118
119
120
121       Since  the specific location of that executable can change from machine
122       to machine, you can specify these flags on a per-machine basis.
123
124
125
126           bundle config set --global build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
127
128
129
130       After running this command, every time bundler  needs  to  install  the
131       mysql gem, it will pass along the flags you specified.
132

CONFIGURATION KEYS

134       Configuration  keys  in  bundler have two forms: the canonical form and
135       the environment variable form.
136
137       For instance, passing the --without  flag  to  bundle  install(1)  bun‐
138       dle-install.1.html  prevents  Bundler  from  installing  certain groups
139       specified in the Gemfile(5). Bundler persists this value  in  app/.bun‐
140       dle/config  so that calls to Bundler.setup do not try to find gems from
141       the Gemfile that you didn´t install. Additionally, subsequent calls  to
142       bundle  install(1) bundle-install.1.html remember this setting and skip
143       those groups.
144
145       The canonical form of this configuration is "without". To  convert  the
146       canonical  form  to  the  environment variable form, capitalize it, and
147       prepend BUNDLE_. The environment variable form  of  "without"  is  BUN‐
148       DLE_WITHOUT.
149
150       Any  periods in the configuration keys must be replaced with two under‐
151       scores when setting it via environment variables. The configuration key
152       local.rack becomes the environment variable BUNDLE_LOCAL__RACK.
153

LIST OF AVAILABLE KEYS

155       The  following  is  a list of all configuration keys and their purpose.
156       You can learn more about their  operation  in  bundle  install(1)  bun‐
157       dle-install.1.html.
158
159allow_deployment_source_credential_changes    (BUNDLE_ALLOW_DEPLOY‐
160           MENT_SOURCE_CREDENTIAL_CHANGES): When  in  deployment  mode,  allow
161           changing    the    credentials    to    a    gem´s    source.   Ex:
162           https://some.host.com/gems/path/     ->     https://user_name:pass‐
163           word@some.host.com/gems/path
164
165allow_offline_install (BUNDLE_ALLOW_OFFLINE_INSTALL): Allow Bundler
166           to use cached data when installing without network access.
167
168auto_clean_without_path (BUNDLE_AUTO_CLEAN_WITHOUT_PATH): Automati‐
169           cally  run  bundle clean after installing when an explicit path has
170           not been set and Bundler is not installing into the system gems.
171
172auto_install (BUNDLE_AUTO_INSTALL): Automatically  run  bundle  in‐
173           stall when gems are missing.
174
175bin  (BUNDLE_BIN):  Install  executables from gems in the bundle to
176           the specified directory. Defaults to false.
177
178cache_all (BUNDLE_CACHE_ALL): Cache all gems,  including  path  and
179           git  gems.  This needs to be explicitly configured on bundler 1 and
180           bundler 2, but will be the default on bundler 3.
181
182cache_all_platforms (BUNDLE_CACHE_ALL_PLATFORMS):  Cache  gems  for
183           all platforms.
184
185cache_path  (BUNDLE_CACHE_PATH):  The  directory  that bundler will
186           place cached gems in when running bundle package, and that  bundler
187           will look in when installing gems. Defaults to vendor/cache.
188
189clean (BUNDLE_CLEAN): Whether Bundler should run bundle clean auto‐
190           matically after bundle install.
191
192console (BUNDLE_CONSOLE): The console that bundle  console  starts.
193           Defaults to irb.
194
195default_install_uses_path       (BUNDLE_DEFAULT_INSTALL_USES_PATH):
196           Whether a bundle install without an explicit  --path  argument  de‐
197           faults to installing gems in .bundle.
198
199deployment  (BUNDLE_DEPLOYMENT):  Disallow  changes to the Gemfile.
200           When the Gemfile is changed and the lockfile has not been  updated,
201           running Bundler commands will be blocked.
202
203disable_checksum_validation   (BUNDLE_DISABLE_CHECKSUM_VALIDATION):
204           Allow installing gems even if they do not match the  checksum  pro‐
205           vided by RubyGems.
206
207disable_exec_load (BUNDLE_DISABLE_EXEC_LOAD): Stop Bundler from us‐
208           ing load to launch an executable in-process in bundle exec.
209
210disable_local_branch_check (BUNDLE_DISABLE_LOCAL_BRANCH_CHECK): Al‐
211           low  Bundler to use a local git override without a branch specified
212           in the Gemfile.
213
214disable_local_revision_check (BUNDLE_DISABLE_LOCAL_REVISION_CHECK):
215           Allow  Bundler  to use a local git override without checking if the
216           revision present in the lockfile is present in the repository.
217
218disable_shared_gems (BUNDLE_DISABLE_SHARED_GEMS): Stop Bundler from
219           accessing gems installed to RubyGems´ normal location.
220
221disable_version_check  (BUNDLE_DISABLE_VERSION_CHECK): Stop Bundler
222           from  checking  if  a  newer  Bundler  version  is   available   on
223           rubygems.org.
224
225force_ruby_platform  (BUNDLE_FORCE_RUBY_PLATFORM):  Ignore the cur‐
226           rent machine´s platform and install only ruby platform gems.  As  a
227           result, gems with native extensions will be compiled from source.
228
229frozen  (BUNDLE_FROZEN):  Disallow changes to the Gemfile. When the
230           Gemfile is changed and the lockfile has not been  updated,  running
231           Bundler  commands  will be blocked. Defaults to true when --deploy‐
232           ment is used.
233
234gem.github_username (BUNDLE_GEM__GITHUB_USERNAME):  Sets  a  GitHub
235           username  or organization to be used in README file when you create
236           a new gem via bundle gem command. It can be overridden  by  passing
237           an explicit --github-username flag to bundle gem.
238
239gem.push_key  (BUNDLE_GEM__PUSH_KEY):  Sets the --key parameter for
240           gem push when using the rake release command with  a  private  gem‐
241           stash server.
242
243gemfile  (BUNDLE_GEMFILE): The name of the file that bundler should
244           use as the Gemfile. This location of this file also sets  the  root
245           of the project, which is used to resolve relative paths in the Gem‐
246           file, among other things. By default, bundler will search  up  from
247           the current working directory until it finds a Gemfile.
248
249global_gem_cache  (BUNDLE_GLOBAL_GEM_CACHE): Whether Bundler should
250           cache all gems globally, rather than locally to the installing Ruby
251           installation.
252
253ignore_funding_requests (BUNDLE_IGNORE_FUNDING_REQUESTS): When set,
254           no funding requests will be printed.
255
256ignore_messages (BUNDLE_IGNORE_MESSAGES): When set, no post install
257           messages will be printed. To silence a single gem, use dot notation
258           like ignore_messages.httparty true.
259
260init_gems_rb (BUNDLE_INIT_GEMS_RB): Generate a gems.rb instead of a
261           Gemfile when running bundle init.
262
263jobs  (BUNDLE_JOBS): The number of gems Bundler can install in par‐
264           allel. Defaults to the number of available processors.
265
266no_install (BUNDLE_NO_INSTALL): Whether bundle package should  skip
267           installing gems.
268
269no_prune  (BUNDLE_NO_PRUNE):  Whether Bundler should leave outdated
270           gems unpruned when caching.
271
272only (BUNDLE_ONLY): A space-separated list  of  groups  to  install
273           only gems of the specified groups.
274
275path  (BUNDLE_PATH):  The  location  on disk where all gems in your
276           bundle will be located regardless of $GEM_HOME or $GEM_PATH values.
277           Bundle  gems not found in this location will be installed by bundle
278           install. Defaults to Gem.dir. When --deployment is  used,  defaults
279           to vendor/bundle.
280
281path.system  (BUNDLE_PATH__SYSTEM):  Whether  Bundler  will install
282           gems into the default system path (Gem.dir).
283
284path_relative_to_cwd  (BUNDLE_PATH_RELATIVE_TO_CWD)  Makes   --path
285           relative to the CWD instead of the Gemfile.
286
287plugins (BUNDLE_PLUGINS): Enable Bundler´s experimental plugin sys‐
288           tem.
289
290prefer_patch (BUNDLE_PREFER_PATCH): Prefer updating  only  to  next
291           patch  version during updates. Makes bundle update calls equivalent
292           to bundler update --patch.
293
294print_only_version_number (BUNDLE_PRINT_ONLY_VERSION_NUMBER): Print
295           only version number from bundler --version.
296
297redirect  (BUNDLE_REDIRECT):  The  number  of redirects allowed for
298           network requests. Defaults to 5.
299
300retry (BUNDLE_RETRY): The number of times to retry  failed  network
301           requests. Defaults to 3.
302
303setup_makes_kernel_gem_public   (BUNDLE_SETUP_MAKES_KERNEL_GEM_PUB‐
304           LIC): Have Bundler.setup make the Kernel#gem  method  public,  even
305           though RubyGems declares it as private.
306
307shebang  (BUNDLE_SHEBANG):  The program name that should be invoked
308           for generated binstubs. Defaults to the ruby install name  used  to
309           generate the binstub.
310
311silence_deprecations (BUNDLE_SILENCE_DEPRECATIONS): Whether Bundler
312           should silence deprecation  warnings  for  behavior  that  will  be
313           changed in the next major version.
314
315silence_root_warning   (BUNDLE_SILENCE_ROOT_WARNING):  Silence  the
316           warning Bundler prints when installing gems as root.
317
318ssl_ca_cert (BUNDLE_SSL_CA_CERT): Path to a designated CA  certifi‐
319           cate  file  or  folder containing multiple certificates for trusted
320           CAs in PEM format.
321
322ssl_client_cert (BUNDLE_SSL_CLIENT_CERT): Path to a designated file
323           containing a X.509 client certificate and key in PEM format.
324
325ssl_verify_mode (BUNDLE_SSL_VERIFY_MODE): The SSL verification mode
326           Bundler uses when making HTTPS requests. Defaults to verify peer.
327
328suppress_install_using_messages (BUNDLE_SUPPRESS_INSTALL_USING_MES‐
329           SAGES):  Avoid printing Using ... messages during installation when
330           the version of a gem has not changed.
331
332system_bindir (BUNDLE_SYSTEM_BINDIR): The location  where  RubyGems
333           installs binstubs. Defaults to Gem.bindir.
334
335timeout (BUNDLE_TIMEOUT): The seconds allowed before timing out for
336           network requests. Defaults to 10.
337
338update_requires_all_flag (BUNDLE_UPDATE_REQUIRES_ALL_FLAG): Require
339           passing  --all  to bundle update when everything should be updated,
340           and disallow passing no options to bundle update.
341
342user_agent (BUNDLE_USER_AGENT):  The  custom  user  agent  fragment
343           Bundler includes in API requests.
344
345with (BUNDLE_WITH): A :-separated list of groups whose gems bundler
346           should install.
347
348without (BUNDLE_WITHOUT): A :-separated list of groups  whose  gems
349           bundler should not install.
350
351
352
353       In  general, you should set these settings per-application by using the
354       applicable flag to the bundle install(1) bundle-install.1.html or  bun‐
355       dle cache(1) bundle-cache.1.html command.
356
357       You  can  set  them globally either via environment variables or bundle
358       config, whichever is preferable for your setup. If you use both,  envi‐
359       ronment variables will take preference over global settings.
360

LOCAL GIT REPOS

362       Bundler  also  allows  you to work against a git repository locally in‐
363       stead of using the remote version. This can be achieved by setting up a
364       local override:
365
366
367
368           bundle config set --local local.GEM_NAME /path/to/local/git/repository
369
370
371
372       For example, in order to use a local Rack repository, a developer could
373       call:
374
375
376
377           bundle config set --local local.rack ~/Work/git/rack
378
379
380
381       Now instead of checking out the remote git repository, the local  over‐
382       ride  will  be used. Similar to a path source, every time the local git
383       repository change, changes will be automatically picked up by  Bundler.
384       This  means  a commit in the local git repo will update the revision in
385       the Gemfile.lock to the local git repo revision. This requires the same
386       attention  as git submodules. Before pushing to the remote, you need to
387       ensure the local override was pushed, otherwise you may point to a com‐
388       mit that only exists in your local machine. You´ll also need to CGI es‐
389       cape your usernames and passwords as well.
390
391       Bundler does many checks to ensure a developer won´t work with  invalid
392       references.  Particularly,  we force a developer to specify a branch in
393       the Gemfile in order to use this feature. If the  branch  specified  in
394       the  Gemfile  and the current branch in the local git repository do not
395       match, Bundler will abort. This ensures  that  a  developer  is  always
396       working  against  the correct branches, and prevents accidental locking
397       to a different branch.
398
399       Finally, Bundler also ensures that the current  revision  in  the  Gem‐
400       file.lock  exists  in  the local git repository. By doing this, Bundler
401       forces you to fetch the latest changes in the remotes.
402

MIRRORS OF GEM SOURCES

404       Bundler supports overriding gem sources with mirrors. This  allows  you
405       to configure rubygems.org as the gem source in your Gemfile while still
406       using your mirror to fetch gems.
407
408
409
410           bundle config set --global mirror.SOURCE_URL MIRROR_URL
411
412
413
414       For  example,  to  use  a  mirror  of  https://rubygems.org  hosted  at
415       https://example.org:
416
417
418
419           bundle config set --global mirror.https://rubygems.org https://example.org
420
421
422
423       Each  mirror  also  provides  a fallback timeout setting. If the mirror
424       does not respond within the fallback timeout, Bundler will try  to  use
425       the original server instead of the mirror.
426
427
428
429           bundle config set --global mirror.SOURCE_URL.fallback_timeout TIMEOUT
430
431
432
433       For example, to fall back to rubygems.org after 3 seconds:
434
435
436
437           bundle config set --global mirror.https://rubygems.org.fallback_timeout 3
438
439
440
441       The  default  fallback timeout is 0.1 seconds, but the setting can cur‐
442       rently only accept whole seconds (for example, 1, 15, or 30).
443

CREDENTIALS FOR GEM SOURCES

445       Bundler allows you to configure credentials for any gem  source,  which
446       allows you to avoid putting secrets into your Gemfile.
447
448
449
450           bundle config set --global SOURCE_HOSTNAME USERNAME:PASSWORD
451
452
453
454       For  example,  to  save  the  credentials of user claudette for the gem
455       source at gems.longerous.com, you would run:
456
457
458
459           bundle config set --global gems.longerous.com claudette:s00pers3krit
460
461
462
463       Or you can set the credentials as an environment variable like this:
464
465
466
467           export BUNDLE_GEMS__LONGEROUS__COM="claudette:s00pers3krit"
468
469
470
471       For gems with a git source with HTTP(S) URL you can specify credentials
472       like so:
473
474
475
476           bundle config set --global https://github.com/rubygems/rubygems.git username:password
477
478
479
480       Or you can set the credentials as an environment variable like so:
481
482
483
484           export BUNDLE_GITHUB__COM=username:password
485
486
487
488       This  is  especially  useful  for private repositories on hosts such as
489       GitHub, where you can use personal OAuth tokens:
490
491
492
493           export BUNDLE_GITHUB__COM=abcd0123generatedtoken:x-oauth-basic
494
495
496
497       Note that any configured credentials will be  redacted  by  informative
498       commands  such  as  bundle config list or bundle config get, unless you
499       use the --parseable flag. This is to avoid unintentionally leaking cre‐
500       dentials when copy-pasting bundler output.
501
502       Also  note  that  to guarantee a sane mapping between valid environment
503       variable names and valid host names, bundler makes the following trans‐
504       formations:
505
506       •   Any  -  characters in a host name are mapped to a triple dash (___)
507           in the corresponding environment variable.
508
509       •   Any . characters in a host name are mapped to a double dash (__) in
510           the corresponding environment variable.
511
512
513
514       This  means that if you have a gem server named my.gem-host.com, you´ll
515       need to use the BUNDLE_MY__GEM___HOST__COM variable to  configure  cre‐
516       dentials for it through ENV.
517

CONFIGURE BUNDLER DIRECTORIES

519       Bundler´s  home,  config,  cache  and plugin directories are able to be
520       configured through environment  variables.  The  default  location  for
521       Bundler´s  home  directory  is ~/.bundle, which all directories inherit
522       from by default. The following outlines the available environment vari‐
523       ables and their default values
524
525
526
527           BUNDLE_USER_HOME : $HOME/.bundle
528           BUNDLE_USER_CACHE : $BUNDLE_USER_HOME/cache
529           BUNDLE_USER_CONFIG : $BUNDLE_USER_HOME/config
530           BUNDLE_USER_PLUGIN : $BUNDLE_USER_HOME/plugin
531
532
533
534
535
536
537                                 February 2023                BUNDLE-CONFIG(1)
Impressum