class Rake::Application
Rake main application object. When invoking rake
from the
command line, a Rake::Application object is
created and run.
Constants
- DEFAULT_RAKEFILES
Attributes
The name of the application (typically 'rake')
The original directory where rake was invoked.
Name of the actual rakefile used.
Number of columns on the terminal
List of the top level task names (task names from the command line).
Public Class Methods
Initialize a Rake::Application object.
# File lib/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
Public Instance Methods
Add a loader to handle imported files ending in the extension
ext
.
# File lib/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 lib/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 lib/rake/application.rb, line 92 def load_rakefile standard_exception_handling do raw_load_rakefile end end
Application options from the command line
# File lib/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 lib/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 lib/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 lib/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