When my two older sisters were children they discovered a pile of golden nuggets in the backyard. Assuming they were suddenly rich, they enthusiastically collected every last nugget before running to tell my father. When my father came out to look at their treasure, he found a pile of... rabbit droppings.

Over the last day I’ve had a similar experience with the Ruby bunny gem. Bunny is a Ruby-based AMQP client named for its integration with RabbitMQ. At first I thought I saw gold, since it was a lightweight implementation of the AMQP protocol that avoided use of the Event Machine (if I want the reactor pattern, I would have implemented it!). Things went smoothly at first until I started to go a little off road with an RPC implementation. The result: rabbit droppings.

I’ve learned the hard way why not to use Bunny:

  • It’s a woefully incomplete implementation of AMQP
  • There are many custom forks each containing essential features, but none containing everything you need
  • Most code examples are based on different forks of the gem, and thus likely to be entirely useless to you
    It’s hard to complain about open source, since you get what you pay for. In addition, the contributors state with absolute clarity in their readme: “Bunny is a very old library with a lot of missing functionality.”

Sigh. Back to work.