I did finally get this working. The core issue was the lack of environment when the shell script runs. I had to resolve that by prefixing my Ruby script with the following lines:
#!/bin/sh
PATH=/usr/local/bin:$PATH
exec ruby -x"/full/path/to/script/directory" $0 "$@"
#!/usr/bin/env ruby
Teflon Ted echoes my frustration with setting up cacti to monitor some remote servers using a script. There are a few good suggestions for solutions, but the most helpful was redirecting stderr to a tmp logfile in the command entry in cacti.