I know ruby treat an object as false whenever it is nil or false. However, I wonder if there are any other ways to change this behavior. For example, I define a class called AreYouOk. class AreYouOk def initialize(ok) @ok = ok end end x = AreYouOk.new(false) puts "you are ok" if x Since x is not nil, ruby prints " you are ok". However, I want ruby to make the decision based on the @ok instance variable. Are there any ways to do that? I know that there is a method called __bool__ in Python. You can define your __bool__ method in your class. The truth value of an object is based on the return value of __bool__. Does ruby provide similar mechanism?