Issue #8273 has been updated by prijutme4ty (Ilya Vorontsov).


@headius
I understand your oppositions. IMO, NullObject should be a kind of immutable/singleton object so that object couldn't change its truthiness unless method is redefined. (but in ruby there're already many ways to shoot own leg)
@rosenfeld
It sounds reasonable. But it makes impossible to make EmptyList as a subclass of List.
----------------------------------------
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-38636

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/