Class: Rake::MultiTask
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Task
|
|
Instance Chain:
self,
Task
|
|
Inherits: |
Rake::Task
|
Defined in: | lib/rake/multi_task.rb |
Overview
Same as a regular task, but the immediate prerequisites are done in parallel using Ruby threads.
Class Method Summary
Task - Inherited
.[] | Return a task with the given name. |
.clear | Clear the task list. |
.create_rule | Define a rule for synthesizing tasks. |
.define_task | Define a task given |
.new | Create a task named |
.scope_name | Apply the scope to the task name according to the rules for this kind of task. |
.task_defined? | TRUE if the task name is already defined. |
.tasks | List of all defined tasks. |
Instance Attribute Summary
Task - Inherited
#application | Application owning this task. |
#comment | First line (or sentence) of all comments. |
#sources, | |
#sources= | List of sources for task. |
#actions | List of actions attached to a task. |
#already_invoked | Has this task already been invoked? Already invoked tasks will be skipped unless you reenable them. |
#locations | File/Line locations of each of the task definitions for this task (only valid if the task was defined with the detect location option set). |
#needed? | Is this task needed? |
#prerequisites | List of prerequisites for a task. |
#scope | Array of nested namespaces names used for task lookup by this task. |
Instance Method Summary
-
#invoke_with_call_chain(task_args, invocation_chain)
Same as invoke, but explicitly pass a call chain to detect circular dependencies.
Task - Inherited
#add_description | Add a description to the task. |
#all_prerequisite_tasks | List of all unique prerequisite tasks including prerequisite tasks' prerequisites. |
#arg_names | Name of arguments for this task. |
#clear | Clear the existing prerequisites, actions, comments, and arguments of a rake task. |
#clear_actions | Clear the existing actions on a rake task. |
#clear_args | Clear the existing arguments on a rake task. |
#clear_comments | Clear the existing comments on a rake task. |
#clear_prerequisites | Clear the existing prerequisites of a rake task. |
#enhance | Enhance a task with prerequisites or actions. |
#execute | Execute the actions associated with this task. |
#full_comment | Full collection of comments. |
#investigation | Return a string describing the internal state of a task. |
#invoke | Invoke the task if it is needed. |
#name | Name of the task, including any namespace qualifiers. |
#prerequisite_tasks | List of prerequisite tasks. |
#reenable | Reenable the task, allowing its tasks to be executed if the task is invoked again. |
#set_arg_names | Set the names of the arguments for this task. |
#source | First source from a rule (nil if no sources). |
#timestamp | Timestamp for this task. |
#to_s | Return task name. |
#first_sentence | Get the first sentence in a string. |
#format_trace_flags | Format the trace flags for display. |
#transform_comments | Transform the list of comments as specified by the block and join with the separator. |
Constructor Details
This class inherits a constructor from Rake::Task
Instance Method Details
#invoke_with_call_chain(task_args, invocation_chain)
Same as invoke, but explicitly pass a call chain to detect circular dependencies. This is largely copied from Task but has been updated such that if multiple tasks depend on this one in parallel, they will all fail if the first execution of this task fails.
# File 'lib/rake/multi_task.rb', line 13
def invoke_with_call_chain(task_args, invocation_chain) new_chain = Rake::InvocationChain.append(self, invocation_chain) @lock.synchronize do begin if @already_invoked if @invocation_exception if application. .trace application.trace "** Previous invocation of #{name} failed #{format_trace_flags}" end raise @invocation_exception else return end end if application. .trace application.trace "** Invoke #{name} #{format_trace_flags}" end @already_invoked = true invoke_prerequisites(task_args, new_chain) execute(task_args) if needed? rescue Exception => ex add_chain_to(ex, new_chain) @invocation_exception = ex raise end end end