Forum: Ruby Rake Task (or rule) dependency check tweaking

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.
243ae676bf9fcdbcf0118567bc45f8af?d=identicon&s=25 Peter Pk (peterk)
on 2009-01-15 17:39
Given there may be a complex task -
   ie: spawns a shell process running "make", "vcbuild", "ant" or
whatever
       or invokes a large ruby subroutine

Given that the module is opaque to ruby and needs to be invoked to
determine whether it does or does not need to rebuild it's (file)
target.  How might one have the dependent task invoke this check in this
ancestor during the traversing of the dependencies, and if the ancestor
task decides it is "up to date" *not* execute it's block, triggering all
it's dependents to rebuild.

Something like overriding an "is_up_to_date" method on a file task which
is invoked during checking the graph of dependencies?

ie: inside ancestor

def is_up_to_date
    sh "checkAndMaybeBuildIt ..." # may or may not build it's targets
    return(no_targets_updated)
end

and if this task may or may not update multiple target files?

(should I get the Rake source code? How to get it? via Gems?)
???
243ae676bf9fcdbcf0118567bc45f8af?d=identicon&s=25 Peter Pk (peterk)
on 2009-01-16 00:48
I got the source to Rake. Pardon the prior post :)

It seems what one does is to subclass a FileTask and overide the

needed? and timestamp methods

Source code is often the best doc :)

Peter Pk wrote:
>
> Given there may be a complex task -
>    ie: spawns a shell process running "make", "vcbuild", "ant" or
> whatever
>        or invokes a large ruby subroutine
>
> Given that the module is opaque to ruby and needs to be invoked to
> determine whether it does or does not need to rebuild it's (file)
> target.  How might one have the dependent task invoke this check in this
> ancestor during the traversing of the dependencies, and if the ancestor
> task decides it is "up to date" *not* execute it's block, triggering all
> it's dependents to rebuild.
>
> Something like overriding an "is_up_to_date" method on a file task which
> is invoked during checking the graph of dependencies?
>
> ie: inside ancestor
>
> def is_up_to_date
>     sh "checkAndMaybeBuildIt ..." # may or may not build it's targets
>     return(no_targets_updated)
> end
>
> and if this task may or may not update multiple target files?
>
> (should I get the Rake source code? How to get it? via Gems?)
> ???
This topic is locked and can not be replied to.