Fixing “MAC address could not be autodected” error from UUIDTools, Phusion Passenger and Ruby Enterprise Edition
I’m using the UUIDTools 1.0.3 gem in a Rails 2.1 application to generate globally unique IDs. After migrating the site to run under Phusion Passenger and Ruby Enterprise Edition I began encountering the following error:
StandardError (MAC address could not be autodetected. Set the MAC address manually.):
/vendor/gems/uuidtools-1.0.3/lib/uuidtools.rb:241:in `timestamp_create'
/vendor/gems/uuidtools-1.0.3/lib/uuidtools.rb:229:in `synchronize'
/vendor/gems/uuidtools-1.0.3/lib/uuidtools.rb:229:in `timestamp_create'
...
It seemed UUIDTools was trying to get the the network card’s MAC address (I’d guess to collect entropy), but couldn’t for some reason. I should also note that this is all running on an Ubuntu Hardy Heron 8.04, 512MB slice over at Slicehost (yes, that’s a referral link, use it! :-).
It turns out that UUIDTools was trying to use ifconfig
to read the MAC address, but ifconfig
wasn’t in the PATH
. Since the application is now running under mod_rails, the relevant PATH
is Apache’s PATH
, which doesn’t include /sbin
by default.
So, a quick edit of /etc/init.d/apache2 to change
ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"
to
ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin:/sbin"
and a sudo /etc/init.d/apache2 restart
was all it took to get the app back up and running.