RABL
General ruby templating with json, bson, xml, plist, msgpack support
...It separates the underlying data model from the representation returned to API consumers. Templates use a Ruby DSL to select attributes, define custom nodes, nest child objects, and transform collections. Output formats include JSON, XML, MessagePack, BSON, and property lists. RABL integrates with Rails, Padrino, Sinatra, and other Tilt-compatible environments while remaining ORM-agnostic. Partials and template inheritance help reuse common representations and reduce duplicated API code. Configuration options also cover caching, root nodes, key formatting, conditional output, encoding engines, and direct rendering outside normal web views.