Forum: Ruby Recursive Rake

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
A777f1a2049d78a12ead38efb8f75f97?d=identicon&s=25 tanner.burson (Guest)
on 2005-12-06 17:16
(Received via mailing list)
Hello all,

I'm working on a very large set of build tasks for several .NET
projects.
I've come up with a fairly simple rake script that with slight
modification
(differing includes, resources, output type, etc) is able to build any
of
the projects individually.

The problem is that I'm now to the point of building the larger outer
project, which will in turn need to build several of the inner library
projects.  I'm unsure of the best way with Rake to handle this.

I know that with Make you could effectively recurse the directories,
each
having their own make files and use those to build the individual
dependencies.  I could simulate this behavior in Rake, but I'm not sure
it's
neccessarily the best way.  I'd also wondered about including the
rakefile
from the inner projects and just use the tasks from those in the outer
file.  A

nyone who has experience with this, or just ideas on how to handle this,
I
would appreciate comments.  Thanks!
15bd00b1919f3f2920dc70da19c1ead9?d=identicon&s=25 rubikitch (Guest)
on 2005-12-06 17:33
(Received via mailing list)
From: Tanner Burson <tanner.burson@gmail.com>
Subject: Recursive Rake
Date: Wed, 7 Dec 2005 01:14:39 +0900

Hi,

I use Rake to make HTMLs from RDs, to upload a package to the server,
to do unit tests, to announce a new version of package to ML, and so
on.  I have my original Rake task libraries for common use and
`require' the Rake library.


> neccessarily the best way.  I'd also wondered about including the rakefile
> from the inner projects and just use the tasks from those in the outer
Simply `load' the inner rakefile to include another rakefile.
10d4acbfdaccb4eee687a428ca00a5d8?d=identicon&s=25 Jim Weirich (weirich)
on 2005-12-06 18:44
tanner.burson wrote:
> Hello all,
>
> I'm working on a very large set of build tasks for several .NET
> projects.
> I've come up with a fairly simple rake script that with slight
> modification
> (differing includes, resources, output type, etc) is able to build any
> of
> the projects individually.
>
> The problem is that I'm now to the point of building the larger outer
> project, which will in turn need to build several of the inner library
> projects.  I'm unsure of the best way with Rake to handle this.

There was a recent discussion about this on the Rake mailing list.
Different folks approached it in different ways.  In particular, one
person in that thread supports a HUGE build system using Rake.  See
http://rubyforge.org/pipermail/rake-devel/2005-Dec... for
details.

-- Jim Weirich
2d532341317628fbb2cb22ec427a1d62?d=identicon&s=25 langstefan (Guest)
on 2005-12-06 21:01
(Received via mailing list)
On Tuesday 06 December 2005 17:14, Tanner Burson wrote:
> handle this.
>
> I know that with Make you could effectively recurse the
> directories, each having their own make files and use those to
> build the individual dependencies.  I could simulate this behavior
> in Rake, but I'm not sure it's neccessarily the best way.  I'd also
> wondered about including the rakefile from the inner projects and
> just use the tasks from those in the outer file.  A
>
> nyone who has experience with this, or just ideas on how to handle
> this, I would appreciate comments.  Thanks!

Perhaps you want to try Rant, which is an alternative to Rake.
It has all features of Rake and more. Support for the problem
you described is built in to some degree.

Assuming there is a directory that contains the "inner projects",
it could have an Rantfile looking like:

    inner_dirs = ["inner_project_1", "inner_project_2"]

    desc "Run tests for all inner projects."
    task :test => inner_dirs.map { |n| "#{n}/test" }

    # load Rantfiles of inner projects
    subdirs inner_dirs

And all inner project directories have an Rantfile that defines
a "test" task, e.g. inner_project_1/Rantfile contains:

    task :test do
        sys "command to run tests for this inner project"
    end

Then from the outer directory, you can type:

    $ rant test

to run the tests for all projects. To run the tests only
for inner_project_1:

    $ rant inner_project_1/test

or:

    $ cd inner_project_1
    $ rant test


Rant homepage: http://make.ruby-co.de
Feature comparison to rake:
    http://make.rubyforge.org/files/doc/rant_vs_rake_rdoc.html

Regards,
  Stefan
A777f1a2049d78a12ead38efb8f75f97?d=identicon&s=25 tanner.burson (Guest)
on 2005-12-06 21:09
(Received via mailing list)
On 12/6/05, Jim Weirich <jim@weirichhouse.org> wrote:
> > the projects individually.
> >
> > The problem is that I'm now to the point of building the larger outer
> > project, which will in turn need to build several of the inner library
> > projects.  I'm unsure of the best way with Rake to handle this.
>
> There was a recent discussion about this on the Rake mailing list.
> Different folks approached it in different ways.  In particular, one
> person in that thread supports a HUGE build system using Rake.  See
> http://rubyforge.org/pipermail/rake-devel/2005-Dec... for
> details.


Thanks for the information Jim.  I would definitely like to see more
information regarding your change for loading the entire dependency
graph in
at once, as that's more or less what I'd like to do.

-- Jim Weirich
This topic is locked and can not be replied to.