From: "headius (Charles Nutter)" Date: 2013-04-16T23:51:37+09:00 Subject: [ruby-core:54340] [CommonRuby - Feature #8273] Make it possible to treat objects as falsy in order to make NullObjects more convenient Issue #8273 has been updated by headius (Charles Nutter). @rosenfeld That would certainly be less impact, but not zero-impact. I do not have a strong opinion one way or the other on that sort of change, but I still suspect it's unlikely to be approved. Changing the semantics of truthiness is a pretty major thing. ---------------------------------------- Feature #8273: Make it possible to treat objects as falsy in order to make NullObjects more convenient https://bugs.ruby-lang.org/issues/8273#change-38616 Author: prijutme4ty (Ilya Vorontsov) Status: Open Priority: Normal Assignee: Category: Target version: NullObject is quite a useful pattern. But refactoring from conditionals to null-object can be very painful because an instance of NullObject will be treated as truthy so code `... if obj` can change its behavior. It'd be great to treat such objects as falsy. Most simple and consistent solution is to make method like #to_boolean or may be #__to_bool (not to break compatibility) which returns false for NilClass and FalseClass and true otherwise unless redefined. I don't know whether perfomance impact'll be high or no. It's one of a few things which cannot be reimplemented using ruby itself, so there is no possibility to construct a gem as a PoC -- http://bugs.ruby-lang.org/