From: Austin Ziegler Date: 2004-01-06T04:54:10+09:00 Subject: Re: Basic Syntax for Extending Instances On Tue, 6 Jan 2004 04:42:26 +0900, Lipper, Matthew wrote: > Hey everybody, > Given the following extension to the Date class: > class Date > attr_accessor :date_precision > class << self > alias_method :old_civil, :civil > def civil(*args) > # How to make this visible? > @date_precision = args.shift > puts "#{@date_precision}" if($VERBOSE) # >> DAY_OF_MONTH > return old_civil(*args) > end > end > end > > date = Date.civil("DAY_OF_MONTH",2004,2,5) > #Doh! > puts date.date_precision # >> nil Try: class Date attr_accessor :date_precision class << self alias_method :old_civil, :civil def civil(*args) precision = args.shift _civil = old_civil(*args) _civil.date_precision = precision _civil end end end date = Date.civil("DAY_OF_MONTH", 2004, 2, 5) puts date.date_precision In your original code, you were adding @date_precision to the singleton class Date (a "class instance" variable). -austin -- austin ziegler * austin@halostatue.ca * Toronto, ON, Canada software designer * pragmatic programmer * 2004.01.05 * 14.48.27