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

NAME

6       bundle-config - Set bundler configuration options
7

SYNOPSIS

9       bundle config [list|get|set|unset] [name [value]]
10

DESCRIPTION

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

REMEMBERING OPTIONS

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

BUILD OPTIONS

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

CONFIGURATION KEYS

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

LIST OF AVAILABLE KEYS

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

CONFIGURE BUNDLER DIRECTORIES

498       Bundler´s  home,  config,  cache  and plugin directories are able to be
499       configured through environment  variables.  The  default  location  for
500       Bundler´s  home  directory  is ~/.bundle, which all directories inherit
501       from by default. The following outlines the available environment vari‐
502       ables and their default values
503
504
505
506           BUNDLE_USER_HOME : $HOME/.bundle
507           BUNDLE_USER_CACHE : $BUNDLE_USER_HOME/cache
508           BUNDLE_USER_CONFIG : $BUNDLE_USER_HOME/config
509           BUNDLE_USER_PLUGIN : $BUNDLE_USER_HOME/plugin
510
511
512
513
514
515
516                                 January 2021                 BUNDLE-CONFIG(1)
Impressum