Code to be executed in order to perform a task. Actions in a rakefile are specified in a code block (usually delimited by do/end pairs.


When a task is executed, all of its actions are performed, in the order they were defined. Note that unlike invoke, execute always executes the actions (without invoking or executing the prerequisites).

file task (Rake::FileTask)

A file task is a task whose purpose is to create a file (which has the same name as the task). When invoked, a file task will only execute if one or more of the following conditions are true.

  1. The associated file does not exist.

  2. A prerequisite has a later time stamp than the existing file.

Because normal Tasks always have the current time as timestamp, a FileTask that has a normal Task prerequisite will always execute.


When a task is invoked, first we check to see if it has been invoked before. If it has been, then nothing else is done. If this is the first time its been invoked, then we invoke each of its prerequisites. Finally, we check to see if we need to execute the actions of this task by calling Rake::Task#needed?. Finally, if the task is needed, we execute its actions.

NOTE: Prerequisites are invoked even if the task is not needed.


Every task has a set (possibly empty) of prerequisites. A prerequisite P to Task T is itself a task that must be invoked before Task T.


A rule is a recipe for synthesizing a task when no task is explicitly defined. Rules generally synthesize file tasks.

task (Rake::Task)

Basic unit of work in a rakefile. A task has a name, a set of prerequisites and a list of actions to be performed.