pristine restores the installed gems in the bundle to their pristine condition using the local gem cache
from RubyGems. For git gems, a forced checkout will be performed.
For further explanation, bundlepristine ignores unpacked files on disk. In other words, this command
utilizes the local .gem cache or the gem's git repository as if one were installing from scratch.
Note: the Bundler gem cannot be restored to its original state with pristine. One also cannot use bundlepristine on gems with a 'path' option in the Gemfile, because bundler has no original copy it can restore
from.
When is it practical to use bundlepristine?
It comes in handy when a developer is debugging a gem. bundlepristine is a great way to get rid of
experimental changes to a gem that one may not want.
Why use bundlepristine over gempristine--all?
Both commands are very similar. For context: bundlepristine, without arguments, cleans all gems from the
lockfile. Meanwhile, gempristine--all cleans all installed gems for that Ruby version.
If a developer forgets which gems in their project they might have been debugging, the Rubygems gempristine[GEMNAME] command may be inconvenient. One can avoid waiting for gempristine--all, and instead
run bundlepristine.
January 2025 BUNDLE-PRISTINE(1)