TL;DR: When Bundler has fixes in master that you need, use the specific_install
Rubygems plugin to install and use Bundler directly from a git branch. Example Travis YAML configuration excerpt:
before_install:
- gem update --system
- gem install specific_install
- gem specific_install https://github.com/bundler/bundler.git
I will spend the rest of this post unpacking what the above means.
In Ruby, there is a package manager called Bundler. It’s continuously developed, and like all software, can have bugs.
When a Bundler bug gets fixed, the code changes are “merged to master
branch”. Then we all wait for the next release. The workarounds are about sticking to an older, non-broken version: use the -v
option to choose an exact release. Example: gem install bundler -v'1.13.7'
The Rubygems system does not have a way to install gems “from a Git source URI”, but it does have a plugin system. And luckily, one of the plugins available (but not on that page) is specific_install.
allows you to install an “edge” gem straight from its github repository, or install one from an arbitrary url
In order to work around the “we all wait for the next release” step, we can install the latest and greatest using this plugin.
The plugin’s has also aliased its specific_install
action to git_install
. The manual claims:
This alias is shorter and is more intention-revealing of the gem's behavior.
Source: The above Travis configuration snippet comes from a PR to the releaf project.