It probably means you're missing one of the fields 'foo' or 'bar' in one of your objects.
The comparison is coming down to something like nil <=> 2, which returns nil (instead of -1, 0 or 1) and #sort_by doesn't know how to handle nil.
Try this:
a.sort_by {|h| [ h['foo'].to_i, h['bar'].to_i ]}