module MiGA::Dataset::Hooks

Helper module including specific functions to handle dataset hooks. Supported events:

Supported hooks:

Internal hooks:

Public Instance Methods

default_hooks() click to toggle source

Dataset hooks triggered by default

# File lib/miga/dataset/hooks.rb, line 28
def default_hooks
  {
    on_create: [[:recalculate_status]],
    on_save: [[:check_type]],
    on_activate: [[:clear_run_counts], [:recalculate_status]],
    on_inactivate: [[:recalculate_status]],
    on_result_ready: [[:_pull_result_hooks]],
    on_preprocessing_ready: [[:clear_run_counts], [:recalculate_status]],
  }
end
hook__pull_result_hooks(_hook_args, event_args) click to toggle source

Dataset Action :pull_result_hooks([], [res]) Pull the hook specific to the type of result

# File lib/miga/dataset/hooks.rb, line 79
def hook__pull_result_hooks(_hook_args, event_args)
  pull_hook(:"on_result_ready_#{event_args.first}", *event_args)
  pull_hook(:on_preprocessing_ready) if done_preprocessing?
end
hook_check_type(_hook_args, _event_args) click to toggle source

Ensure that the dataset type exists and is compatible with the project type

# File lib/miga/dataset/hooks.rb, line 58
def hook_check_type(_hook_args, _event_args)
  check_type
end
hook_clear_run_counts(_hook_args, _event_args) click to toggle source

Clear metadata from run counts

# File lib/miga/dataset/hooks.rb, line 41
def hook_clear_run_counts(_hook_args, _event_args)
  metadata
    .data.keys
    .select { |k| k.to_s =~ /^_try_/ }
    .each { |k| metadata[k] = nil }
  metadata[:_step] = nil
  save
end
hook_recalculate_status(_hook_args, _event_args) click to toggle source

Recalculate the dataset status and save in metadata

# File lib/miga/dataset/hooks.rb, line 52
def hook_recalculate_status(_hook_args, _event_args)
  recalculate_status
end
hook_run_cmd(hook_args, event_args) click to toggle source

Run cmd in the command-line with {{variables}}: dataset, project, project_name, miga, object (if defined for the event)

  • hook_args: +[cmd]+

  • event_args: +[object (optional)]+

# File lib/miga/dataset/hooks.rb, line 67
def hook_run_cmd(hook_args, event_args)
  Process.wait(
    spawn hook_args.first.miga_variables(
      dataset: name, project: project.path, project_name: project.name,
      miga: MiGA::MiGA.root_path, object: event_args.first
    )
  )
end