class Thermite::Rails::Tasks::RootProjectRakeTask

This is intended as a base class for defining other Rake tasks at the Rails/root project level (as opposed to the crate/project level).

Public Class Methods

new() click to toggle source
# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 11
def initialize
  @root_project = Thermite::Rails.root_project
end

Public Instance Methods

define_project_rake_tasks() click to toggle source

Iterates through each project task and calls `#define_rake_task`.

# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 48
def define_project_rake_tasks
  project_tasks.each(&:define_rake_task)
end
define_rake_task() click to toggle source

Method that does the standard Rake task DSL calls for defining the task.

# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 33
def define_rake_task
  return if Rake::Task.task_defined?(task_name)

  desc(desc_text)
  task task_name => prerequisite_tasks
end
defined?() click to toggle source

@return [Boolean] Has a task with this name already been defined?

# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 68
def defined?
  Rake::Task.task_defined?(task_name)
end
desc_text() click to toggle source

Text the task should list for its `desc`.

@return [String]

# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 28
def desc_text
  raise 'Define in child'
end
prerequisite_tasks() click to toggle source

A list of all of the tasks this take should run.

@return [Array<String>]

# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 43
def prerequisite_tasks
  project_task_names
end
project_task_class() click to toggle source

@return [Class]

# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 21
def project_task_class
  raise 'Define in child'
end
project_task_names() click to toggle source

@return [Array<String>]

# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 53
def project_task_names
  project_tasks.map(&:task_name)
end
project_tasks() click to toggle source

@return [Array<Class>]

# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 58
def project_tasks
  @project_tasks ||= @root_project.projects.map do |project|
    p = project_task_class.new(project)
    p.define_rake_task unless p.defined?

    p
  end
end
task_name() click to toggle source

@return [String]

# File lib/thermite/rails/tasks/root_project_rake_task.rb, line 16
def task_name
  raise 'Define in child'
end