In this case, I'm torn between #3 - does STDOUT or some other NullObject type sensible default approach allow the caller of my api to be more confident - or #5 - if the user doesn't intend to route content to stdout and is passing nil unintentionally, does failing to raise an exception "result in things going wrong in less easy-to-diagnose ways". Leaning toward the latter.