I use bundler to manage dependencies in my rails app, and I have a gem hosted in a git repository included as followed:
gem 'gem-name', :git => 'path/to/my/gem.git'
To update this gem, I execute bundle update
but it also updates all the gem mentioned in Gemfile. So what is the command to update just one specific gem?
The way to do this is to run the following command:
I've used
bundle update --source
myself for a long time but there are scenarios where it doesn't work. Luckily, there's a gem calledbundler-patch
which has the goal of fixing this shortcoming.I also wrote a short blog post about how to use
bundler-patch
and whybundle update --source
doesn't work consistently. Also, be sure to check out a post by chrismo that explains in great detail what the--source
option does.bundle update gem-name [--major|--patch|--minor]
This also works for dependencies.
bundler update --source gem-name
will update the revision hash in Gemfile.lock which you can compare with the last commit hash of that git branch (master by default).GIT remote: git@github.com:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954
can be found at
github.com/organization/repo-name/commits/c810f4a2
(I used shorthand 8 character commit hash for the url)Here you can find a good explanation on the difference between
Update both gem and dependencies:
or
Update exclusively the gem:
along with some nice examples of possible side-effects.
Update
As @Tim's answer says, as of Bundler 1.14 the officially-supported way to this is with
bundle update --conservative gem-name
.You simply need to specify the gem name on the command line: