From: dblack@... Date: 2006-12-10T02:39:11+09:00 Subject: Re: Dynamically Create Singleton Method Hi -- On Sat, 9 Dec 2006, pachl wrote: > On Dec 9, 6:26 am, dbl...@wobblini.net wrote: >> On Sat, 9 Dec 2006, pachl wrote: >>> I'm not sure how to explain what I'm looking for so I will show you: >> >>> # this works, but not quite the functionality I need >> >>> def simulate_cgi_upload >>> class << cgi_file = Tempfile.new('simulate-cgi') >>> def content_type() 'image/jpeg' end >>> end >>> cgi_file >>> end >> >>> # this does NOT work, but has the functionality I need >>> # i.e.: dynamically defining content_type's return value using >>> # the argument from simulate_cgi_upload method. >> >>> def simulate_cgi_upload(mime_type = 'image/jpeg') >>> class << cgi_file = Tempfile.new('simulate-cgi') >>> def content_type() mime_type end >>> end >>> cgi_file >>> endTry this (or something like it in case I've mistyped anything): >> >> def simulate_cgi_upload(mime_type = 'image/jpeg') >> cgi_file = Tempfile.new('simulate-cgi') >> (class << cgi_file; self; end).class_eval do >> define_method("content_type") { mime_type } >> end >> cgi_file >> end > > Excactly what I was looking for; compact and fairly elegant. > > Thanks for the very quick response David and good morning to you. Good morning :-) It would be more elegant if we had Kernel#singleton_class -- then you wouldn't have to do the little workaround. Fingers crossed.... David -- David A. Black | dblack@wobblini.net Author of "Ruby for Rails" [1] | Ruby/Rails training & consultancy [3] DABlog (DAB's Weblog) [2] | Co-director, Ruby Central, Inc. [4] [1] http://www.manning.com/black | [3] http://www.rubypowerandlight.com [2] http://dablog.rubypal.com | [4] http://www.rubycentral.org