summaryrefslogtreecommitdiff
path: root/man/bundle-update.1.txt
diff options
context:
space:
mode:
Diffstat (limited to 'man/bundle-update.1.txt')
-rw-r--r--man/bundle-update.1.txt390
1 files changed, 390 insertions, 0 deletions
diff --git a/man/bundle-update.1.txt b/man/bundle-update.1.txt
new file mode 100644
index 0000000000..d2ec46444b
--- /dev/null
+++ b/man/bundle-update.1.txt
@@ -0,0 +1,390 @@
+BUNDLE-UPDATE(1) BUNDLE-UPDATE(1)
+
+
+
+1mNAME0m
+ 1mbundle-update 22m- Update your gems to the latest available versions
+
+1mSYNOPSIS0m
+ 1mbundle update 4m22m*gems24m [--all] [--group=NAME] [--source=NAME] [--local]
+ [--ruby] [--bundler[=VERSION]] [--full-index] [--jobs=JOBS] [--quiet]
+ [--patch|--minor|--major] [--redownload] [--strict] [--conservative]
+
+1mDESCRIPTION0m
+ Update the gems specified (all gems, if 1m--all 22mflag is used), ignoring
+ the previously installed gems specified in the 1mGemfile.lock22m. In gen-
+ eral, you should use bundle install(1) 4mbundle-install.1.html24m to install
+ the same exact gems and versions across machines.
+
+ You would use 1mbundle update 22mto explicitly update the version of a gem.
+
+1mOPTIONS0m
+ 1m--all 22mUpdate all gems specified in Gemfile.
+
+ 1m--group=<name>22m, 1m-g=[<name>]0m
+ Only update the gems in the specified group. For instance, you
+ can update all gems in the development group with 1mbundle update0m
+ 1m--group development22m. You can also call 1mbundle update rails0m
+ 1m--group test 22mto update the rails gem and all gems in the test
+ group, for example.
+
+ 1m--source=<name>0m
+ The name of a 1m:git 22mor 1m:path 22msource used in the Gemfile(5). For
+ instance, with a 1m:git 22msource of
+ 1mhttp://github.com/rails/rails.git22m, you would call 1mbundle update0m
+ 1m--source rails0m
+
+ 1m--local0m
+ Do not attempt to fetch gems remotely and use the gem cache
+ instead.
+
+ 1m--ruby 22mUpdate the locked version of Ruby to the current version of
+ Ruby.
+
+ 1m--bundler0m
+ Update the locked version of bundler to the invoked bundler ver-
+ sion.
+
+ 1m--full-index0m
+ Fall back to using the single-file index of all gems.
+
+ 1m--jobs=[<number>]22m, 1m-j[<number>]0m
+ Specify the number of jobs to run in parallel. The default is 1m122m.
+
+ 1m--retry=[<number>]0m
+ Retry failed network or git requests for 4mnumber24m times.
+
+ 1m--quiet0m
+ Only output warnings and errors.
+
+ 1m--redownload0m
+ Force downloading every gem.
+
+ 1m--patch0m
+ Prefer updating only to next patch version.
+
+ 1m--minor0m
+ Prefer updating only to next minor version.
+
+ 1m--major0m
+ Prefer updating to next major version (default).
+
+ 1m--strict0m
+ Do not allow any gem to be updated past latest 1m--patch 22m| 1m--minor0m
+ | 1m--major22m.
+
+ 1m--conservative0m
+ Use bundle install conservative update behavior and do not allow
+ shared dependencies to be updated.
+
+1mUPDATING ALL GEMS0m
+ If you run 1mbundle update --all22m, bundler will ignore any previously
+ installed gems and resolve all dependencies again based on the latest
+ versions of all gems available in the sources.
+
+ Consider the following Gemfile(5):
+
+
+
+ source "https://rubygems.org"
+
+ gem "rails", "3.0.0.rc"
+ gem "nokogiri"
+
+
+
+ When you run bundle install(1) 4mbundle-install.1.html24m the first time,
+ bundler will resolve all of the dependencies, all the way down, and
+ install what you need:
+
+
+
+ Fetching gem metadata from https://rubygems.org/.........
+ Resolving dependencies...
+ Installing builder 2.1.2
+ Installing abstract 1.0.0
+ Installing rack 1.2.8
+ Using bundler 1.7.6
+ Installing rake 10.4.0
+ Installing polyglot 0.3.5
+ Installing mime-types 1.25.1
+ Installing i18n 0.4.2
+ Installing mini_portile 0.6.1
+ Installing tzinfo 0.3.42
+ Installing rack-mount 0.6.14
+ Installing rack-test 0.5.7
+ Installing treetop 1.4.15
+ Installing thor 0.14.6
+ Installing activesupport 3.0.0.rc
+ Installing erubis 2.6.6
+ Installing activemodel 3.0.0.rc
+ Installing arel 0.4.0
+ Installing mail 2.2.20
+ Installing activeresource 3.0.0.rc
+ Installing actionpack 3.0.0.rc
+ Installing activerecord 3.0.0.rc
+ Installing actionmailer 3.0.0.rc
+ Installing railties 3.0.0.rc
+ Installing rails 3.0.0.rc
+ Installing nokogiri 1.6.5
+
+ Bundle complete! 2 Gemfile dependencies, 26 gems total.
+ Use `bundle show [gemname]` to see where a bundled gem is installed.
+
+
+
+ As you can see, even though you have two gems in the Gemfile(5), your
+ application needs 26 different gems in order to run. Bundler remembers
+ the exact versions it installed in 1mGemfile.lock22m. The next time you run
+ bundle install(1) 4mbundle-install.1.html24m, bundler skips the dependency
+ resolution and installs the same gems as it installed last time.
+
+ After checking in the 1mGemfile.lock 22minto version control and cloning it
+ on another machine, running bundle install(1) 4mbundle-install.1.html0m
+ will 4mstill24m install the gems that you installed last time. You don't
+ need to worry that a new release of 1merubis 22mor 1mmail 22mchanges the gems you
+ use.
+
+ However, from time to time, you might want to update the gems you are
+ using to the newest versions that still match the gems in your Gem-
+ file(5).
+
+ To do this, run 1mbundle update --all22m, which will ignore the 1mGem-0m
+ 1mfile.lock22m, and resolve all the dependencies again. Keep in mind that
+ this process can result in a significantly different set of the 25
+ gems, based on the requirements of new gems that the gem authors
+ released since the last time you ran 1mbundle update --all22m.
+
+1mUPDATING A LIST OF GEMS0m
+ Sometimes, you want to update a single gem in the Gemfile(5), and leave
+ the rest of the gems that you specified locked to the versions in the
+ 1mGemfile.lock22m.
+
+ For instance, in the scenario above, imagine that 1mnokogiri 22mreleases
+ version 1m1.4.422m, and you want to update it 4mwithout24m updating Rails and all
+ of its dependencies. To do this, run 1mbundle update nokogiri22m.
+
+ Bundler will update 1mnokogiri 22mand any of its dependencies, but leave
+ alone Rails and its dependencies.
+
+1mOVERLAPPING DEPENDENCIES0m
+ Sometimes, multiple gems declared in your Gemfile(5) are satisfied by
+ the same second-level dependency. For instance, consider the case of
+ 1mthin 22mand 1mrack-perftools-profiler22m.
+
+
+
+ source "https://rubygems.org"
+
+ gem "thin"
+ gem "rack-perftools-profiler"
+
+
+
+ The 1mthin 22mgem depends on 1mrack >= 1.022m, while 1mrack-perftools-profiler0m
+ depends on 1mrack ~> 1.022m. If you run bundle install, you get:
+
+
+
+ Fetching source index for https://rubygems.org/
+ Installing daemons (1.1.0)
+ Installing eventmachine (0.12.10) with native extensions
+ Installing open4 (1.0.1)
+ Installing perftools.rb (0.4.7) with native extensions
+ Installing rack (1.2.1)
+ Installing rack-perftools_profiler (0.0.2)
+ Installing thin (1.2.7) with native extensions
+ Using bundler (1.0.0.rc.3)
+
+
+
+ In this case, the two gems have their own set of dependencies, but they
+ share 1mrack 22min common. If you run 1mbundle update thin22m, bundler will
+ update 1mdaemons22m, 1meventmachine 22mand 1mrack22m, which are dependencies of 1mthin22m,
+ but not 1mopen4 22mor 1mperftools.rb22m, which are dependencies of
+ 1mrack-perftools_profiler22m. Note that 1mbundle update thin 22mwill update 1mrack0m
+ even though it's 4malso24m a dependency of 1mrack-perftools_profiler22m.
+
+ In short, by default, when you update a gem using 1mbundle update22m,
+ bundler will update all dependencies of that gem, including those that
+ are also dependencies of another gem.
+
+ To prevent updating shared dependencies, prior to version 1.14 the only
+ option was the 1mCONSERVATIVE UPDATING 22mbehavior in bundle install(1) 4mbun-0m
+ 4mdle-install.1.html24m:
+
+ In this scenario, updating the 1mthin 22mversion manually in the Gemfile(5),
+ and then running bundle install(1) 4mbundle-install.1.html24m will only
+ update 1mdaemons 22mand 1meventmachine22m, but not 1mrack22m. For more information,
+ see the 1mCONSERVATIVE UPDATING 22msection of bundle install(1) 4mbun-0m
+ 4mdle-install.1.html24m.
+
+ Starting with 1.14, specifying the 1m--conservative 22moption will also pre-
+ vent shared dependencies from being updated.
+
+1mPATCH LEVEL OPTIONS0m
+ Version 1.14 introduced 4 patch-level options that will influence how
+ gem versions are resolved. One of the following options can be used:
+ 1m--patch22m, 1m--minor 22mor 1m--major22m. 1m--strict 22mcan be added to further influence
+ resolution.
+
+ 1m--patch0m
+ Prefer updating only to next patch version.
+
+ 1m--minor0m
+ Prefer updating only to next minor version.
+
+ 1m--major0m
+ Prefer updating to next major version (default).
+
+ 1m--strict0m
+ Do not allow any gem to be updated past latest 1m--patch 22m| 1m--minor0m
+ | 1m--major22m.
+
+ When Bundler is resolving what versions to use to satisfy declared
+ requirements in the Gemfile or in parent gems, it looks up all avail-
+ able versions, filters out any versions that don't satisfy the require-
+ ment, and then, by default, sorts them from newest to oldest, consider-
+ ing them in that order.
+
+ Providing one of the patch level options (e.g. 1m--patch22m) changes the
+ sort order of the satisfying versions, causing Bundler to consider the
+ latest 1m--patch 22mor 1m--minor 22mversion available before other versions. Note
+ that versions outside the stated patch level could still be resolved to
+ if necessary to find a suitable dependency graph.
+
+ For example, if gem 'foo' is locked at 1.0.2, with no gem requirement
+ defined in the Gemfile, and versions 1.0.3, 1.0.4, 1.1.0, 1.1.1, 2.0.0
+ all exist, the default order of preference by default (1m--major22m) will be
+ "2.0.0, 1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2".
+
+ If the 1m--patch 22moption is used, the order of preference will change to
+ "1.0.4, 1.0.3, 1.0.2, 1.1.1, 1.1.0, 2.0.0".
+
+ If the 1m--minor 22moption is used, the order of preference will change to
+ "1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2, 2.0.0".
+
+ Combining the 1m--strict 22moption with any of the patch level options will
+ remove any versions beyond the scope of the patch level option, to
+ ensure that no gem is updated that far.
+
+ To continue the previous example, if both 1m--patch 22mand 1m--strict 22moptions
+ are used, the available versions for resolution would be "1.0.4, 1.0.3,
+ 1.0.2". If 1m--minor 22mand 1m--strict 22mare used, it would be "1.1.1, 1.1.0,
+ 1.0.4, 1.0.3, 1.0.2".
+
+ Gem requirements as defined in the Gemfile will still be the first
+ determining factor for what versions are available. If the gem require-
+ ment for 1mfoo 22min the Gemfile is '~> 1.0', that will accomplish the same
+ thing as providing the 1m--minor 22mand 1m--strict 22moptions.
+
+1mPATCH LEVEL EXAMPLES0m
+ Given the following gem specifications:
+
+
+
+ foo 1.4.3, requires: ~> bar 2.0
+ foo 1.4.4, requires: ~> bar 2.0
+ foo 1.4.5, requires: ~> bar 2.1
+ foo 1.5.0, requires: ~> bar 2.1
+ foo 1.5.1, requires: ~> bar 3.0
+ bar with versions 2.0.3, 2.0.4, 2.1.0, 2.1.1, 3.0.0
+
+
+
+ Gemfile:
+
+
+
+ gem 'foo'
+
+
+
+ Gemfile.lock:
+
+
+
+ foo (1.4.3)
+ bar (~> 2.0)
+ bar (2.0.3)
+
+
+
+ Cases:
+
+
+
+ # Command Line Result
+ ------------------------------------------------------------
+ 1 bundle update --patch 'foo 1.4.5', 'bar 2.1.1'
+ 2 bundle update --patch foo 'foo 1.4.5', 'bar 2.1.1'
+ 3 bundle update --minor 'foo 1.5.1', 'bar 3.0.0'
+ 4 bundle update --minor --strict 'foo 1.5.0', 'bar 2.1.1'
+ 5 bundle update --patch --strict 'foo 1.4.4', 'bar 2.0.4'
+
+
+
+ In case 1, bar is upgraded to 2.1.1, a minor version increase, because
+ the dependency from foo 1.4.5 required it.
+
+ In case 2, only foo is requested to be unlocked, but bar is also
+ allowed to move because it's not a declared dependency in the Gemfile.
+
+ In case 3, bar goes up a whole major release, because a minor increase
+ is preferred now for foo, and when it goes to 1.5.1, it requires 3.0.0
+ of bar.
+
+ In case 4, foo is preferred up to a minor version, but 1.5.1 won't work
+ because the --strict flag removes bar 3.0.0 from consideration since
+ it's a major increment.
+
+ In case 5, both foo and bar have any minor or major increments removed
+ from consideration because of the --strict flag, so the most they can
+ move is up to 1.4.4 and 2.0.4.
+
+1mRECOMMENDED WORKFLOW0m
+ In general, when working with an application managed with bundler, you
+ should use the following workflow:
+
+ o After you create your Gemfile(5) for the first time, run
+
+ $ bundle install
+
+ o Check the resulting 1mGemfile.lock 22minto version control
+
+ $ git add Gemfile.lock
+
+ o When checking out this repository on another development machine,
+ run
+
+ $ bundle install
+
+ o When checking out this repository on a deployment machine, run
+
+ $ bundle install --deployment
+
+ o After changing the Gemfile(5) to reflect a new or update depen-
+ dency, run
+
+ $ bundle install
+
+ o Make sure to check the updated 1mGemfile.lock 22minto version control
+
+ $ git add Gemfile.lock
+
+ o If bundle install(1) 4mbundle-install.1.html24m reports a conflict, man-
+ ually update the specific gems that you changed in the Gemfile(5)
+
+ $ bundle update rails thin
+
+ o If you want to update all the gems to the latest possible versions
+ that still match the gems listed in the Gemfile(5), run
+
+ $ bundle update --all
+
+
+
+
+
+
+ October 2018 BUNDLE-UPDATE(1)