From: Giulio Piancastelli Date: 2005-03-23T01:59:52+09:00 Subject: Re: How to implement a new TaskLib in Rake Jim Weirich wrote: > If you can post the details of what you are doing, I'd be glad to give a hand. Well, I took another shot at a TaskLib implementation, and perhaps found what was wrong with my code. Initially I wrote: module Rake class FitTestTask < TaskLib attr_accessor :name, :libs, :pattern def test_files=(list) @test_files = list end def initialize(name=:fittest) @name = name @libs = ["lib"] @pattern = nil @test_files = nil yield self if block_given? define end def define puts "Running FitTest tasklib with #@libs and tests #@test_files" self end end end And rake aborted with the error message I reported. Then, reimplementing, I noticed that you were actually *defining* a task in TestTask#define, so I came up with: def define task @name do puts "Running FitTest tasklib with #@libs and tests #@test_files" end self end This way, Rake runs fine, even if I don't understand the internal mechanics. So, must every task in the lib be defined at once in a method called by the constructor? The pattern usage of tasks seems to suggest that (it's always Rake::SomeTask.new {...}) but I'd like to hear more about this. And... is it just *that* easy? Or are there other details I should be aware of? I'll try to define my tasks in a lib now; I'll get back to the newsgroup if I happen to face some problems, perhaps harder to think about than the latest. Sorry to bother. Best Regards, Giulio Piancastelli.