Updated to support ActiveModel and to be a modern gem

Figured you may want to manage it since it based on your code, otherwise I can publish it on rubygems myself.