Method: Batchbase::Core#execute

Defined in:
lib/batchbase/core.rb

#execute(options = {}, &process) ⇒ Object

内部的には

init
parse_options_inner
execute_inner
release

の順にコールしてます

options

プログラムより指定するバッチ動作オプション(ハッシュ値):double_process_check 初期値 true :auto_recover 初期値 false



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/batchbase/core.rb', line 85

def execute(options={},&process)
  result = nil
  begin
    init
    parse_options_inner(options,ARGV)
    logger.info  "start script(#{pg_path})"
    logger.debug "caller=#{caller}"
    result = double_process_check_and_create_pid_file
    case result
    when DOUBLE_PROCESS_CHECK__OK,DOUBLE_PROCESS_CHECK__AUTO_RECOVERD
      if result == DOUBLE_PROCESS_CHECK__AUTO_RECOVERD
        logger.warn "lock file still exists[pid=#{env[:old_pid_from_pid_file]}:file=#{pid_file}],but process does not found.Auto_recover enabled.so process continues"
      end
      result = execute_inner(&process)
    when DOUBLE_PROCESS_CHECK__NG
      logger.error "lock file still exists[pid=#{env[:old_pid_from_pid_file]}:file=#{pid_file}],but process does not found.Auto_recover disabled.so process can not continue"
    when DOUBLE_PROCESS_CHECK__STILL_RUNNING
      logger.warn "pid:#{env[:old_pid_from_pid_file]} still running"
    when DOUBLE_PROCESS_CHECK__SAME_PROCESS_NAME
      logger.warn "process_name:#{env[:process_name]} still exists"
    else
      raise 'must not happen'
    end
  rescue => e
    logger.error e
  ensure
    release
    logger.info "finish script (%1.3fsec)" % (Time.now - @__script_started_at)
  end
  result
end