From: Payton Swick Date: 2006-02-02T07:21:10+09:00 Subject: Re: callbacks, events, notification in general Not sure if it's any help, but here's something I've been using in my code which is sort of the reverse of Observable. This is actually just a snippet of the whole thing without comments or some fancy features I added. I may put it up as a gem if there's interest. module HandlesEvents attr_reader :handlers def on_event(*triggers, &handler) @handlers ||= Hash.new triggers.each { |trigger| @handlers[trigger] = handler } end def handles?(trigger) @handlers ||= Hash.new return true unless @handlers[trigger].nil? false end def handle(trigger) @handlers ||= Hash.new @handlers[trigger].call(trigger) unless @handlers[trigger].nil? end end -Payton Damphyr wrote: > OK, bare with me, this is brainstorming of a sorts: > I want to have some kind of event notification from my classes. > Typically what I would do would be to pass a logger object and let the > class log by itself, but I'm not really satisfied with this solution in > most cases. > > What I would prefer was define a callback method and give this to the > object. Then I could do whatever I want with it and not only use logs. > Mostly I want to have progress reports. > > something like > > class A > def set_callback notify > @notify=notify > end > def something > puts "something" > send(@notify) if @notify > end > end > > def coocoo > puts "hey" > end > a=A.new > a.something > a.set_callback(:coocoo) > a.something > > Now this does exactly what I want and can be wrapped up in a module to > be included for general use. > Question: Is there a "better" solution? What are my alternatives? > Cheers, > V.- > >