Rake main application object. When invoking rake from the
command line, a Rake::Application object is
created and run.
Initialize a Rake::Application object.
# File rake/application.rb, line 46
def initialize
super
@name = 'rake'
@rakefiles = DEFAULT_RAKEFILES.dup
@rakefile = nil
@pending_imports = []
@imported = []
@loaders = {}
@default_loader = Rake::DefaultLoader.new
@original_dir = Dir.pwd
@top_level_tasks = []
add_loader('rb', DefaultLoader.new)
add_loader('rf', DefaultLoader.new)
add_loader('rake', DefaultLoader.new)
@tty_output = STDOUT.tty?
@terminal_columns = ENV['RAKE_COLUMNS'].to_i
end
Add a loader to handle imported files ending in the extension
ext.
# File rake/application.rb, line 129
def add_loader(ext, loader)
ext = ".#{ext}" unless ext =~ /^\./
@loaders[ext] = loader
end
Initialize the command line parameters and app name.
# File rake/application.rb, line 83
def init(app_name='rake')
standard_exception_handling do
@name = app_name
args = handle_options
collect_command_line_tasks(args)
end
end
Find the rakefile and then load it and any pending imports.
# File rake/application.rb, line 92
def load_rakefile
standard_exception_handling do
raw_load_rakefile
end
end
Application options from the command line
# File rake/application.rb, line 135
def options
@options ||= OpenStruct.new
end
Run the Rake application. The run method performs the following three steps:
Initialize the command line options (init).
Define the tasks (load_rakefile).
Run the top level tasks (top_level).
If you wish to build a custom rake command, you should call
init on your application. Then define any tasks. Finally,
call top_level to run your top level tasks.
# File rake/application.rb, line 74
def run
standard_exception_handling do
init
load_rakefile
top_level
end
end
Run the given block with the thread startup and shutdown.
# File rake/application.rb, line 112
def run_with_threads
thread_pool.gather_history if options.job_stats == :history
yield
thread_pool.join
if options.job_stats
stats = thread_pool.statistics
puts "Maximum active threads: #{stats[:max_active_threads]} + main"
puts "Total threads in play: #{stats[:total_threads_in_play]} + main"
end
ThreadHistoryDisplay.new(thread_pool.history).show if
options.job_stats == :history
end
Run the top level tasks of a Rake application.
# File rake/application.rb, line 99
def top_level
run_with_threads do
if options.show_tasks
display_tasks_and_comments
elsif options.show_prereqs
display_prerequisites
else
top_level_tasks.each { |task_name| invoke_task(task_name) }
end
end
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.