This (and related) questions have been asked several times in the past.
From a search of the Ruby API category …