From: Trans Date: 2006-08-20T01:20:04+09:00 Subject: SOS Taskable I'm stuck. I can't figure out how to implement Taskable. If you haven;t seen my rantings abut this before, Taskable is an emulation of Rake's task syntax: desc "this and that" task 'foo' => [ 'bar' ] do ... end but limted to the scope of a module/class. Also, tasks themselves are just be regular methods. It's easy enough to define: class Module def task( name_preqs, &action ) if Hash === name_preqs name = name_preqs.key preqs = name_preqs.value else name = name_preqs preqs = [] end define_method( name ) do |*args| preqs.each { |n| send(n,*args) } action.call(*args) end end end The challenge comes from keeping track of the prequistes so they won't get run more than once. With some help on this list I came to understand that I needed to use TSort, that much seemed to work. But problems arise in just looking up the tasks. Consider when a module extends itself, then a task is called at the module level, how will it look up a prerequiste that was defined at the instance level? Anyway, the whole idea was to create a system that parallels Method, UnboundMethod, instance_method, instance_methods, etc., but substitute 'task' for 'method'. Maybe this is just too low level to be pulled off in pure Ruby? I'm on the verge of giving up --I'm weary of working on it. Butmaybe someone else can see a clear soltuion? Thanks, T.