Yarp is a small Sinatra app that makes your bundler faster. You'll love it if you update your apps a lot... or simply deploy a lot.
On a example medium-sizes application with 34 direct gems dependencies, Yarp
makes my bundle commands up to 80% faster:
| direct Rubygems | with `yarp.io` | local Yarp | |
| bundle install (1 gem missing) | 170 s | 51 s | 24 s |
| bundle update (73 updates) | 140 s | 65 s | 45 s |
| bundle update (no change) | 26 s | 13 s | 8.5 s |
Thats a 45% percent win right there. 8 seconds shaved of my deploy times. If you deploy 20 times a day to your staging environments and 5 times a day to production, you're getting 15 minutes of your life back every week. Make those count!
Deploy your own Yarp or use the one at yarp.io.
Just replace this line on top of your Gemfile:
source 'http://rubygems.org'
By one of the following:
source 'http://us.yarp.io'
source 'http://eu.yarp.io'
You're done.
If you want/need SSL connections, you can use the Heroku URLs:
source 'https://yarp-us.herokuapp.com'
source 'https://yarp-eu.herokuapp.com'
You can make this even faster by deploying your very own, local Yarp. Example install with the excellent Pow:
curl get.pow.cx | sh # unless you already have Pow
git clone https://github.com/mezis/yarp.git ~/.yarp
ln -s ~/.yarp ~/.pow/yarp
Then change your Gemfile's' source line to:
source ENV.fetch('GEM_SOURCE', 'http://eu.yarp.io')
And add the GEM_SOURCE to your ~/.profile or ~/.zshrc:
export GEM_SOURCE=http://yarp.dev
Why the dance with ENV.fetch? Simply because your codebase may be deployed
or used somewhere lacking yarp.dev; this gives you a fallback to another
source of gems.
Edit the sources entry in your ~/.gemrc:
---
:sources:
- http://yarp.dev
assuming you've followed the Pow instructions above; or use one of the
yarp.io servers instead.
Yarp caches calls to Rubygem's dependency API, spec files, and gems for 24
hours if using (eu|us).yarp.io. It redirects all other calls to Rubygems
directly.
This means that when gems get released or updated, you'll lag a day behind.
Checkout, make sure you have a Memcache running,
configure .env, and
$ bundle exec foreman run rackup
Thake a long look at the .env file, as most
configuration options for Yarp are there.
Yarp is released under the MIT licence. Copyright (c) 2013 HouseTrip Ltd.