Module: Opal::Rails::TaskHooks

Defined in:
lib/opal/rails/task_hooks.rb

Constant Summary collapse

BUILD_HOOKS =
[
  'assets:precompile',
  'test:prepare',
  'spec:prepare'
].freeze
PREPARE_HOOKS =

Ensure rake test invokes test:prepare (which Rails defines but does not wire as a prerequisite of the :test task).

{
  'test' => 'test:prepare',
  'spec' => 'spec:prepare'
}.freeze
CLOBBER_HOOKS =
[
  'assets:clobber'
].freeze

Class Method Summary collapse

Class Method Details

.apply!(task_manager: Rake::Task) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/opal/rails/task_hooks.rb', line 27

def apply!(task_manager: Rake::Task)
  BUILD_HOOKS.each do |task_name|
    attach(task_name, prerequisite: 'opal:build', task_manager: task_manager)
  end
  CLOBBER_HOOKS.each do |task_name|
    attach(task_name, prerequisite: 'opal:clobber', task_manager: task_manager)
  end
  PREPARE_HOOKS.each do |task_name, prerequisite|
    attach(task_name, prerequisite: prerequisite, task_manager: task_manager)
  end
end

.attach(task_name, prerequisite:, task_manager: Rake::Task) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/opal/rails/task_hooks.rb', line 39

def attach(task_name, prerequisite:, task_manager: Rake::Task)
  return unless task_manager.task_defined?(task_name)

  task = task_manager[task_name]
  return if task.prerequisites.include?(prerequisite)

  task.enhance([prerequisite])
end