Class: CapistranoMulticonfigParallel::Job

Inherits:
Object
  • Object
show all
Includes:
ApplicationHelper
Defined in:
lib/capistrano_multiconfig_parallel/classes/job.rb

Overview

class used for defining the job class

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ApplicationHelper

action_confirmed?, check_hash_set, check_numeric, fetch_parsed_string, fetch_remaining_arguments, find_loaded_gem, find_remaining_args, get_question_details, msg_for_stdin?, msg_for_task?, multi_fetch_argv, parse_task_string, percent_of, regex_last_match, setup_command_line_standard, strip_characters_from_string, value_is_array?, verify_array_of_strings, verify_empty_options, warn_array_without_strings, wrap_string

Methods included from CoreHelper

app_debug_enabled?, ask_confirm, ask_stdout_confirmation, check_terminal_tty, debug_websocket?, error_filtered?, execute_with_rescue, find_worker_log, force_confirmation, format_error, log_error, log_output_error, log_to_file, print_to_log_file, rescue_error, rescue_interrupt, setup_filename_logger, setup_logger_formatter, show_warning, terminal_actor, websocket_config, websocket_server_config

Methods included from InternalHelper

check_file, config_file, create_log_file, custom_commands, default_internal_config, default_internal_configuration_params, detect_root, enable_main_log_file, fail_capfile_not_found, fetch_default_internal_config, find_config_type, find_env_multi_cap_root, find_file_in_directory, internal_config_directory, internal_config_file, log_directory, main_log_file, multi_level_prop, pathname_is_root?, pwd_directory, pwd_parent_dir, root, setup_default_configuration_types, sliced_default_config, try_detect_capfile

Constructor Details

#initialize(application, options) ⇒ Job

Returns a new instance of Job.



18
19
20
21
22
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 18

def initialize(application, options)
  @options = options.stringify_keys
  @application = application
  @manager = @application.manager
end

Instance Attribute Details

#exit_status=(value) ⇒ Object (writeonly)

Sets the attribute exit_status

Parameters:

  • the value to set the attribute exit_status to.



9
10
11
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 9

def exit_status=(value)
  @exit_status = value
end

#optionsObject (readonly)

Returns the value of attribute options.



8
9
10
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 8

def options
  @options
end

#status=(value) ⇒ Object (writeonly)

Sets the attribute status

Parameters:

  • the value to set the attribute status to.



9
10
11
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 9

def status=(value)
  @status = value
end

Instance Method Details

#commandObject



28
29
30
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 28

def command
  @command ||= CapistranoMulticonfigParallel::JobCommand.new(self)
end

#crashed?Boolean

Returns:



95
96
97
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 95

def crashed?
  failed? || dead? || worker_died? || exit_status.present?
end

#dead?Boolean

Returns:



99
100
101
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 99

def dead?
  status.present? && status.to_s.downcase == 'dead'
end

#env_variableObject



24
25
26
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 24

def env_variable
  CapistranoMulticonfigParallel::ENV_KEY_JOB_ID
end

#failed?Boolean

Returns:



87
88
89
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 87

def failed?
  ['deploy:failed'].include?(status)
end

#finished?Boolean

Returns:



83
84
85
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 83

def finished?
  status == 'finished'
end

#idObject



61
62
63
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 61

def id
  @id ||= @options.fetch('id', SecureRandom.uuid)
end

#rolling_back?Boolean

Returns:



91
92
93
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 91

def rolling_back?
  ['deploy:rollback'].include?(action)
end

#row_sizeObject



47
48
49
50
51
52
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 47

def row_size
  longest_hash = terminal_row.max_by do |hash|
    hash[:value].size
  end
  (longest_hash[:value].size.to_f / 80.0).ceil
end

#terminal_env_variablesObject



32
33
34
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 32

def terminal_env_variables
  setup_command_line(filtered_keys: [env_variable])
end

#terminal_rowObject



36
37
38
39
40
41
42
43
44
45
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 36

def terminal_row
  [
    { value: count.to_s },
    { value: id.to_s },
    { value: wrap_string(job_stage) },
    { value: wrap_string(capistrano_action) },
    { value: terminal_env_variables.map { |str| wrap_string(str) }.join("\n") },
    { value: wrap_string(worker_state) }
  ]
end

#worker_died?Boolean

Returns:



103
104
105
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 103

def worker_died?
  status.present? && status.to_s.downcase == 'worker_died'
end

#worker_stateObject



54
55
56
57
58
59
# File 'lib/capistrano_multiconfig_parallel/classes/job.rb', line 54

def worker_state
  default = status.to_s.upcase.red
  return default unless @manager.alive?
  worker = @manager.get_worker_for_job(id)
  worker.alive? ? worker.worker_state : default
end