Jay,
In Ruby there's an argument list, and a separate way to receive a block.
When you call a method with { ... }, it passes that as a block, separate
from the argument list. You can also pass a method/proc, etc in place of a
block, by putting it last on the argument list and prefixing with an
ampersand.
Try this instead:
task task_name, &method(:setup_task).to_proc
Assaf
On 6/11/07, Turpin, Jay <[EMAIL PROTECTED]> wrote:
I am probably missing something obvious, but I don't understand why this
won't work. I have created a BaseTask class that I use to simplify the
creation of custom Rake tasks. I'd like to let the developer create a new
task like this:
class SampleTask < BaseTask
attr_accessor :name, :directory
def initialize(params)
super params
end
setup_task
logger.info "Running Task #{task_name}"
puts "Name: #{name}"
puts "directory: #{directory}"
end
end
and then convert the method to a Proc in the base class and assign it to
the task:
class BaseTask < Rake::TaskLib
attr_accessor :task_name
def initialize(params=:my_task_name)
@task_name = case params
when Hash
task params.keys[0] => params[params.keys[0]]
params.keys[0]
else
params
end
yield self if block_given?
create_task
end
def create_task
task task_name, method(:setup_task).to_proc
self
end
end
It doesn't work. I get a wrong number of parameters error. However, if I
define setup_task() as a method that accepts a block, I can save that
block in a variable and then assign it. Something like this:
setup_task(&block)
@setup_task = block
end
def create_task
task task_name, &@setup_task
self
end
During inspection, they both resolve to Proc objects, so I am confused.
Any help would be appreciated. Thanks!
Regards,********
*Jay Turpin*
*******"Respect cannot be learned, purchased, or acquired; it can only be
earned." - Bits & Pieces*
_______________________________________________
Rake-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rake-devel
_______________________________________________
Rake-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rake-devel