Do not depend on rubygems.org when in production

Rohit Sharma 2013-07-01
Do not depend on rubygems.org when in production

We bumped into an issue lately, while deploying one of our major app in the production environment. Just when we tried to run the command

$ bundle install

we realized that the rubygems repository was facing a downtime. Hence we were not able to install gems on our production server, which in turn caused a downtime on our side.

In order to overcome this issue we took the decision of caching our gems into our application’s repository(i.e. vendor/cache directory). Below are the steps that we took:

Step 1: On your local machine run the command below

$ bundle package

this command will copy all the .gem files and their respective dependencies in your bundle into the vendor/cache directory of your rails application.

Step 2: Now after committing your code and running the bundle install command on your production servers, run the command below:

$ bundle install --local

The --local parameter will fetch the gems only inside the vendor/cache directory of your rails application. Hence not hitting the rubygems servers.

This proves to be very helpful in cases where you want quick deployments on your servers.