7.11.2006
4:26 PM

Expiring a method. And let’s keep meta out of this.
 class Trial
    def run_me
       def self.run_me; raise Exception, "NO MORE." end
       puts "Your trial period has ended." 
    end
 end

 t = Trial.new
 t.run_me
 #=> Your trial period has ended.
 t.run_me
 #=> (trial):3:in `run_me': NO MORE. (Exception)
The run_me overwrites itself. But notice it uses def self. This overwrites the method in the object, not in the class. So you can create more Trial objects which haven’t self-destructed yet.
why the lucky stiff

Now that is neat. When I get home later tonight (I'm on lunch break now, I've got about 5 minutes), I'm going to see how I can apply this technique to Io, if at all.

Ciao.