From: Adam Prescott Date: 2013-03-14T04:42:39+09:00 Subject: Re: Singleton method Because def obj.foo uses the top-level value of N = 1, whereas the class << obj; ...; end version uses the value of N previously defined in that scope, and is thus 2. Different scopes.