I may have completely misunderstood what the #as_json method is
for, but it was my assumption that it's supposed to return a
JSON-mappable version of the object.
Meaning, it should return a String, Fixnum, TrueClass,
FalseClass, NilClass, Array or Hash. In literally every
example of it's use those are the types that are returned - which
makes perfect sense.
But classes like Regexp and BigDecimal return self? If a JSON
library checks to see if the object responds to #as_json, and calls
it if so, it'll infinitely loop.
Should BigDecimal return to_f? And Regexp to_s?