I’m giving squid a spin as a local cache for gems. My goal is to speed up the time git clean -whatever ; bundle install --path .bundle
takes.
This solution isn’t perfect. It doesn’t make the bundle install
as fast as I’d like. Also, squid needs to be restarted (sudo launchctl stop squid
) when I change locations and/or sleep my laptop, because it forgets how to look up DNS (it seems to be caching the DNS server list).
I’m using homebrew and on a Mac running Snow Leopard, so this will be most helpful for anyone running the same.
Install squid
brew install squid
This installed squid 3.1.9.
Configure squid
Open /usr/local/etc/squid.conf
, and uncomment the cache_dir
line.
Start squid
First, you need to initialize squid. Some of this stuff may be equivalent to throwing your machine under a bus, so please be aware of what you’re copying.
chown nobody /usr/local/var/cache chgrp everyone /usr/local/var/logs chmod g+w /usr/local/var/logs sudo squid -z
I wanted squid to run any time the machine is running. So, I created /Library/LaunchDaemons/squid.plist to look like this:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>squid</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/usr/local/sbin/squid</string> <string>-N</string> <string>-d 1</string> <string>-D</string> </array> <key>ServiceIPC</key> <false/> <key>RunAtLoad</key> <true/> </dict> </plist>
Start it by doing sudo launchctl -w /Library/LaunchDaemons/squid.plist
Configure bundler/rubygems
Open ~/.gemrc
and add:
http_proxy: http://localhost:3128
My .gemrc looks like this:
--- gem: --no-ri --no-rdoc http_proxy: http://localhost:3128/