# Recursive Rake rules with multiple pre-requisites

**URL:** <https://rubytalk.org/t/recursive-rake-rules-with-multiple-pre-requisites/28786>\
**Category:** ruby-talk\
**Created:** [9 July 2006 11:10 UTC](https://rubytalk.org/t/recursive-rake-rules-with-multiple-pre-requisites/28786 "2006-07-09T11:10:10Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ToRA](https://avatars.discourse-cdn.com/v4/letter/t/3ab097/32.png) [@ToRA](https://rubytalk.org/u/ToRA)\
**Post date:** [9 July 2006 11:10 UTC](https://rubytalk.org/t/recursive-rake-rules-with-multiple-pre-requisites/28786/1 "2006-07-09T11:10:10Z")

</div>

Hi,

I'm having a problem getting rake to work using rules that are  
recursive and have multiple prerequisites...I've got my problem down to  
a fairly simple example, at the bottom of the post.

If I run it, (assuming a lib directory exists) I get:  
$rake  
(in /tmp)  
rake aborted!  
Don't know how to build task 'blah'

(See full trace by running task with --trace)

but commenting out either of the two procs marked at #1 or #2, it can  
build.

Any ideas / suggestions or is it a bug?

Cheers,

Tris

$rake --version  
rake, version 0.7.1

$cat rakefile  
require 'rake/clean'

CLEAN.include 'aa'  
CLEAN.include 'bb'  
CLEAN.include 'cc'  
CLEAN.include 'lib/map.o'

task :default =\> "blah"

rule(/lib\/.\*\.o$/ =\> [ proc { |x| 'aa' },  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proc { |x| 'bb' }]) do |t|  
&nbsp;&nbsp;sh %{touch #{[t.name](http://t.name)}}  
end

rule(/blah/ =\> [ proc { |x| 'cc'}, #1  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proc { |x| 'lib/map.o' } #2  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]) do |t|  
end

file 'cc' do  
&nbsp;&nbsp;sh %{touch 'cc'}  
end

file 'aa' do  
&nbsp;&nbsp;sh %{touch 'aa'}  
end

file 'bb' do  
&nbsp;&nbsp;sh %{touch 'bb'}  
end
