matt neuburg wrote: > Some languages have a "with" construction, where undefined methods are > routed to a designated object. Here's an example from UserTalk: > > with system.startup { > string(license) > } > > UserTalk knows what "string" is, but when it can't find "license" it > reinterprets it as system.startup.license, which works. In > UserTalk, you > can even chain these tests: > > with system.temp, system.startup { > string(license) > } > > That means we try system.temp.license and if that doesn't exist we > proceed to system.startup.license. > > So my question is: is Ruby amenable to this kind of construction? Is > there a way to bend the language to that it acts like this? Thx - m. Something like this? def with(*objects) begin yield rescue NoMethodError => exception o = objects.detect { |_o| _o.respond_to? exception.name } or raise o.send exception.name, *exception.args end end m = with(Time) do "aaa".now end p m Fri Oct 27 10:57:44 PDT 2006