Apple - Auto-updating Homebrew

This is very easy to do.

For efficiency (and cool factor), I would use a tool like Lingon to launch this script periodically using launchctl/launchd instead of each time you start a shell. On my MacBook, it takes 3 seconds to update the second time (no work done, DNS cache set, etc...) and it take 10 second to run the first time (no work done) or 15+ seconds if a package needs to be downloaded or compiled.

Perhaps once a day or once an hour - running in the background would be sufficient given those times to execute?

You could make a simple script /usr/local/bin/brewup that calls brew in turn and logs the results to the system log

#!/bin/bash

brew=/usr/local/bin/brew
logger=/usr/bin/logger

$brew update 2>&1  | $logger -t brewup.update
$brew upgrade 2>&1 | $logger -t brewup.upgrade
$brew cleanup 2>&1 | $logger -t brewup.cleanup

I just call the brewup when I'm about to go make tea or when I get started and let it run in the background.

brewup &

There is a tool called homebrew-autoupdate which will do this for you. It can automatically run brew update in the background every 24 hours (configurable) to ensure that you always have fresh homebrew data when you go to install/upgrade packages.

To install it run brew tap domt4/autoupdate and brew autoupdate --start 43200 to configure it to autoupdate every 12 hours (43200 seconds).