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

NAME

6       bundle-install - Install the dependencies specified in your Gemfile
7

SYNOPSIS

9       bundle   install   [--binstubs[=DIRECTORY]]   [--clean]  [--deployment]
10       [--force] [--frozen] [--full-index] [--gemfile=GEMFILE] [--jobs=NUMBER]
11       [--local]    [--no-cache]    [--no-prune]   [--path   PATH]   [--quiet]
12       [--retry=NUMBER] [--shebang] [--standalone[=GROUP[ GROUP...]]]  [--sys‐
13       tem]   [--trust-policy=POLICY]   [--with=GROUP[   GROUP...]]   [--with‐
14       out=GROUP[ GROUP...]]
15

DESCRIPTION

17       Install the gems specified in your Gemfile(5). If  this  is  the  first
18       time  you  run  bundle  install  (and  a  Gemfile.lock does not exist),
19       Bundler will fetch all remote sources, resolve dependencies and install
20       all needed gems.
21
22       If a Gemfile.lock does exist, and you have not updated your Gemfile(5),
23       Bundler will fetch all remote sources, but use the dependencies  speci‐
24       fied in the Gemfile.lock instead of resolving dependencies.
25
26       If  a  Gemfile.lock  does  exist, and you have updated your Gemfile(5),
27       Bundler will use the dependencies in the Gemfile.lock for all gems that
28       you  did  not update, but will re-resolve the dependencies of gems that
29       you did update. You can find more information about this update process
30       below under CONSERVATIVE UPDATING.
31

OPTIONS

33       To  apply  any  of --binstubs, --deployment, --path, or --without every
34       time bundle install is run, use bundle config (see bundle-config(1)).
35
36       --binstubs[=<directory>]
37              Creates a directory (defaults to ~/bin) and place  any  executa‐
38              bles from the gem there. These executables run in Bundler´s con‐
39              text. If used, you might add this  directory  to  your  environ‐
40              ment´s  PATH variable. For instance, if the rails gem comes with
41              a rails executable, this flag will create a bin/rails executable
42              that  ensures  that  all  referred dependencies will be resolved
43              using the bundled gems.
44
45       --clean
46              On finishing the installation Bundler is  going  to  remove  any
47              gems  not  present  in the current Gemfile(5). Don´t worry, gems
48              currently in use will not be removed.
49
50       --deployment
51              In deployment mode, Bundler will ´roll-out´ the bundle for  pro‐
52              duction  or  CI  use. Please check carefully if you want to have
53              this option enabled in your development environment.
54
55       --force
56              Force download every gem, even  if  the  required  versions  are
57              already available locally.
58
59       --frozen
60              Do  not allow the Gemfile.lock to be updated after this install.
61              Exits non-zero if there are going to  be  changes  to  the  Gem‐
62              file.lock.
63
64       --full-index
65              Bundler will not call Rubygems´ API endpoint (default) but down‐
66              load and cache a (currently big) index file of all gems. Perfor‐
67              mance  can  be  improved for large bundles that seldom change by
68              enabling this option.
69
70       --gemfile=<gemfile>
71              The location of the Gemfile(5) which Bundler  should  use.  This
72              defaults  to  a  Gemfile(5) in the current working directory. In
73              general, Bundler will assume that the location of the Gemfile(5)
74              is also the project´s root and will try to find Gemfile.lock and
75              vendor/cache relative to this location.
76
77       --jobs=[<number>], -j[<number>]
78              The maximum number of parallel download and  install  jobs.  The
79              default is 1.
80
81       --local
82              Do not attempt to connect to rubygems.org. Instead, Bundler will
83              use the gems already present  in  Rubygems´  cache  or  in  ven‐
84              dor/cache.  Note  that  if  a  appropriate platform-specific gem
85              exists on rubygems.org it will not be found.
86
87       --no-cache
88              Do not update the cache in vendor/cache with the  newly  bundled
89              gems.  This  does not remove any gems in the cache but keeps the
90              newly bundled gems from being cached during the install.
91
92       --no-prune
93              Don´t remove stale gems from the  cache  when  the  installation
94              finishes.
95
96       --path=<path>
97              The  location to install the specified gems to. This defaults to
98              Rubygems´ setting. Bundler shares this location  with  Rubygems,
99              gem  install  ... will have gem installed there, too. Therefore,
100              gems installed without a --path ...  setting  will  show  up  by
101              calling gem list. Accordingly, gems installed to other locations
102              will not get listed.
103
104       --quiet
105              Do not  print  progress  information  to  the  standard  output.
106              Instead, Bundler will exit using a status code ($?).
107
108       --retry=[<number>]
109              Retry failed network or git requests for number times.
110
111       --shebang=<ruby-executable>
112              Uses the specified ruby executable (usually ruby) to execute the
113              scripts created with --binstubs. In addition, if you use  --bin‐
114              stubs  together  with  --shebang jruby these executables will be
115              changed to execute jruby instead.
116
117       --standalone[=<list>]
118              Makes a bundle that can work without depending  on  Rubygems  or
119              Bundler  at runtime. A space separated list of groups to install
120              has to be specified. Bundler creates a  directory  named  bundle
121              and  installs  the  bundle  there.  It  also  generates  a  bun‐
122              dle/bundler/setup.rb file to replace Bundler´s own setup in  the
123              manner  required.  Using this option implicitly sets path, which
124              is a [remembered option][REMEMBERED OPTIONS].
125
126       --system
127              Installs the gems  specified  in  the  bundle  to  the  system´s
128              Rubygems  location. This overrides any previous configuration of
129              --path.
130
131       --trust-policy=[<policy>]
132              Apply the Rubygems security policy policy, where policy  is  one
133              of  HighSecurity, MediumSecurity, LowSecurity, AlmostNoSecurity,
134              or NoSecurity. For more details, please see the Rubygems signing
135              documentation linked below in SEE ALSO.
136
137       --with=<list>
138              A space-separated list of groups referencing gems to install. If
139              an optional group is given it is installed. If a group is  given
140              that  is in the remembered list of groups given to --without, it
141              is removed from that list.
142
143       --without=<list>
144              A space-separated list of groups referencing gems to skip during
145              installation. If a group is given that is in the remembered list
146              of groups given to --with, it is removed from that list.
147

DEPLOYMENT MODE

149       Bundler´s defaults are optimized for development. To switch to defaults
150       optimized  for deployment and for CI, use the --deployment flag. Do not
151       activate deployment mode on development machines, as it will  cause  an
152       error when the Gemfile(5) is modified.
153
154       1.  A Gemfile.lock is required.
155
156           To ensure that the same versions of the gems you developed with and
157           tested with  are  also  used  in  deployments,  a  Gemfile.lock  is
158           required.
159
160           This  is  mainly  to  ensure  that  you remember to check your Gem‐
161           file.lock into version control.
162
163       2.  The Gemfile.lock must be up to date
164
165           In development, you can modify your Gemfile(5)  and  re-run  bundle
166           install to conservatively update your Gemfile.lock snapshot.
167
168           In  deployment, your Gemfile.lock should be up-to-date with changes
169           made in your Gemfile(5).
170
171       3.  Gems are installed to vendor/bundle not your default  system  loca‐
172           tion
173
174           In  development,  it´s  convenient  to  share the gems used in your
175           application with other applications and other scripts that  run  on
176           the system.
177
178           In  deployment, isolation is a more important default. In addition,
179           the user deploying the  application  may  not  have  permission  to
180           install  gems to the system, or the web server may not have permis‐
181           sion to read them.
182
183           As a result, bundle install --deployment installs gems to the  ven‐
184           dor/bundle  directory  in  the  application. This may be overridden
185           using the --path option.
186
187
188

SUDO USAGE

190       By default, Bundler installs gems to the same location as gem install.
191
192       In some cases, that location may not be writable by your Unix user.  In
193       that case, Bundler will stage everything in a temporary directory, then
194       ask you for your sudo password in order to copy  the  gems  into  their
195       system location.
196
197       From  your  perspective,  this  is  identical  to  installing  the gems
198       directly into the system.
199
200       You should never use sudo bundle install. This is because several other
201       steps in bundle install must be performed as the current user:
202
203       ·   Updating your Gemfile.lock
204
205       ·   Updating your vendor/cache, if necessary
206
207       ·   Checking out private git repositories using your user´s SSH keys
208
209
210
211       Of  these  three,  the  first  two  could theoretically be performed by
212       chowning the resulting files to $SUDO_USER.  The  third,  however,  can
213       only  be  performed  by  invoking  the git command as the current user.
214       Therefore, git gems are downloaded and installed into ~/.bundle  rather
215       than $GEM_HOME or $BUNDLE_PATH.
216
217       As  a  result,  you  should run bundle install as the current user, and
218       Bundler will ask for your password if it is needed to put the gems into
219       their final location.
220

INSTALLING GROUPS

222       By  default, bundle install will install all gems in all groups in your
223       Gemfile(5), except those declared for a different platform.
224
225       However, you can explicitly tell Bundler  to  skip  installing  certain
226       groups  with  the --without option. This option takes a space-separated
227       list of groups.
228
229       While the --without option will skip installing the gems in the  speci‐
230       fied  groups, it will still download those gems and use them to resolve
231       the dependencies of every gem in your Gemfile(5).
232
233       This is so that installing a different set of groups on another machine
234       (such  as  a  production  server) will not change the gems and versions
235       that you have already developed and tested against.
236
237       Bundler offers a rock-solid guarantee that the third-party code you are
238       running in development and testing is also the third-party code you are
239       running in production. You can choose to exclude some of that  code  in
240       different  environments,  but  you  will never be caught flat-footed by
241       different versions of third-party code being used in different environ‐
242       ments.
243
244       For a simple illustration, consider the following Gemfile(5):
245
246
247
248           source ´https://rubygems.org´
249
250           gem ´sinatra´
251
252           group :production do
253             gem ´rack-perftools-profiler´
254           end
255
256
257
258       In  this  case,  sinatra depends on any version of Rack (>= 1.0), while
259       rack-perftools-profiler depends on 1.x (~> 1.0).
260
261       When you run bundle install --without  production  in  development,  we
262       look  at the dependencies of rack-perftools-profiler as well. That way,
263       you do not spend all your time developing against Rack 2.0,  using  new
264       APIs  unavailable  in Rack 1.x, only to have Bundler switch to Rack 1.2
265       when the production group is used.
266
267       This should not cause any problems  in  practice,  because  we  do  not
268       attempt  to  install the gems in the excluded groups, and only evaluate
269       as part of the dependency resolution process.
270
271       This also means that you cannot include different versions of the  same
272       gem  in  different  groups,  because doing so would result in different
273       sets of dependencies used in development and production. Because of the
274       vagaries  of  the  dependency  resolution process, this usually affects
275       more than the gems you list in your Gemfile(5), and can  (surprisingly)
276       radically change the gems you are using.
277

THE GEMFILE.LOCK

279       When  you  run  bundle install, Bundler will persist the full names and
280       versions of all gems that you used (including dependencies of the  gems
281       specified in the Gemfile(5)) into a file called Gemfile.lock.
282
283       Bundler uses this file in all subsequent calls to bundle install, which
284       guarantees that you always use the same exact code, even as your appli‐
285       cation moves across machines.
286
287       Because  of the way dependency resolution works, even a seemingly small
288       change (for instance, an update to a point-release of a dependency of a
289       gem  in  your  Gemfile(5)) can result in radically different gems being
290       needed to satisfy all dependencies.
291
292       As a result, you SHOULD check your Gemfile.lock into  version  control.
293       If you do not, every machine that checks out your repository (including
294       your production server) will resolve all dependencies again, which will
295       result  in  different versions of third-party code being used if any of
296       the gems in the Gemfile(5) or  any  of  their  dependencies  have  been
297       updated.
298

CONSERVATIVE UPDATING

300       When  you  make a change to the Gemfile(5) and then run bundle install,
301       Bundler will update only the gems that you modified.
302
303       In other words, if a gem that you did  not  modify  worked  before  you
304       called  bundle install, it will continue to use the exact same versions
305       of all dependencies as it used before the update.
306
307       Let´s take a look at an example. Here´s your original Gemfile(5):
308
309
310
311           source ´https://rubygems.org´
312
313           gem ´actionpack´, ´2.3.8´
314           gem ´activemerchant´
315
316
317
318       In this case, both actionpack and activemerchant depend  on  activesup‐
319       port.  The  actionpack  gem  depends on activesupport 2.3.8 and rack ~>
320       1.1.0, while the activemerchant gem depends on activesupport >=  2.3.2,
321       braintree >= 2.0.0, and builder >= 2.0.0.
322
323       When   the   dependencies  are  first  resolved,  Bundler  will  select
324       activesupport 2.3.8, which satisfies the requirements of both  gems  in
325       your Gemfile(5).
326
327       Next, you modify your Gemfile(5) to:
328
329
330
331           source ´https://rubygems.org´
332
333           gem ´actionpack´, ´3.0.0.rc´
334           gem ´activemerchant´
335
336
337
338       The  actionpack  3.0.0.rc  gem  has  a  number of new dependencies, and
339       updates the activesupport dependency to = 3.0.0.rc and the rack  depen‐
340       dency to ~> 1.2.1.
341
342       When  you  run  bundle  install,  Bundler  notices that you changed the
343       actionpack gem, but not the activemerchant gem. It evaluates  the  gems
344       currently being used to satisfy its requirements:
345
346       activesupport 2.3.8
347              also  used  to  satisfy a dependency in activemerchant, which is
348              not being updated
349
350       rack ~> 1.1.0
351              not currently being used to satisfy another dependency
352
353       Because you did not explicitly ask to update activemerchant, you  would
354       not  expect it to suddenly stop working after updating actionpack. How‐
355       ever, satisfying the new activesupport 3.0.0.rc dependency  of  action‐
356       pack requires updating one of its dependencies.
357
358       Even  though activemerchant declares a very loose dependency that theo‐
359       retically matches activesupport 3.0.0.rc, Bundler treats gems  in  your
360       Gemfile(5)  that have not changed as an atomic unit together with their
361       dependencies. In this case, the activemerchant dependency is treated as
362       activemerchant  1.7.1  +  activesupport  2.3.8,  so bundle install will
363       report that it cannot update actionpack.
364
365       To explicitly update actionpack, including its dependencies which other
366       gems  in  the  Gemfile(5) still depend on, run bundle update actionpack
367       (see bundle update(1)).
368
369       Summary: In general, after making a change  to  the  Gemfile(5)  ,  you
370       should  first  try  to run bundle install, which will guarantee that no
371       other gem in the Gemfile(5) is impacted by the change. If that does not
372       work, run [bundle update(1)][bundle-update].
373

SEE ALSO

375       ·   Gem                           install                          docs
376           http://guides.rubygems.org/rubygems-basics/#installing-gems
377
378       ·   Rubygems signing docs http://guides.rubygems.org/security/
379
380
381
382
383
384
385                                 December 2017               BUNDLE-INSTALL(1)
Impressum