Class: Libis::Workflow::ActiveRecord::Run

Inherits:
WorkItem
  • Object
show all
Includes:
Base::Run
Defined in:
lib/libis/workflow/activerecord/run.rb

Instance Method Summary collapse

Methods inherited from WorkItem

#add_item, #copy_item, #duplicate, #get_item_list, #get_items, #move_item

Methods included from Helpers::PropertyHelper

included

Methods included from Base

included, #to_hash, #to_s

Instance Method Details

#close_loggerObject



77
78
79
80
81
82
83
# File 'lib/libis/workflow/activerecord/run.rb', line 77

def close_logger
  # noinspection RubyResolve
  return unless self.log_to_file
  ::Logging::Appenders[self.name].close
  ::Logging::Appenders.remove(self.name)
  ::Logging::Repository.instance.delete(self.name)
end

#loggerObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/libis/workflow/activerecord/run.rb', line 52

def logger
  # noinspection RubyResolve
  unless self.log_to_file
    return self.job.logger
  end
  logger = ::Logging::Repository.instance[self.name]
  return logger if logger
  unless ::Logging::Appenders[self.name]
    # noinspection RubyResolve
    self.log_filename ||= File.join(::Libis::Workflow::ActiveRecord::Config[:log_dir], "#{self.name}-#{self.id}.log")
    # noinspection RubyResolve
    ::Logging::Appenders::File.new(
        self.name,
        filename: self.log_filename,
        layout: ::Libis::Workflow::ActiveRecord::Config.get_log_formatter,
        level: self.log_level
    )
  end
  logger = ::Libis::Workflow::ActiveRecord::Config.logger(self.name, self.name)
  logger.additive = false
  # noinspection RubyResolve
  logger.level = self.log_level
  logger
end

#nameObject



85
86
87
88
89
90
91
92
93
# File 'lib/libis/workflow/activerecord/run.rb', line 85

def name
  parts = [self.job.name]
  parts << self.run_name unless self.run_name.blank?
  parts << self.created_at.strftime('%Y%m%d-%H%M%S')
  parts << self.id.to_s if self.run_name.blank?
  parts.join('-')
rescue
  self.id.to_s
end

#rm_logObject



27
28
29
30
31
# File 'lib/libis/workflow/activerecord/run.rb', line 27

def rm_log
  # noinspection RubyResolve
  log_file = self.log_filename
  FileUtils.rm(log_file) if log_file && !log_file.blank? && File.exist?(log_file)
end

#rm_workdirObject



33
34
35
36
# File 'lib/libis/workflow/activerecord/run.rb', line 33

def rm_workdir
  workdir = self.work_dir
  FileUtils.rmtree workdir if workdir && !workdir.blank? && Dir.exist?(workdir)
end

#run(action = :run) ⇒ Object



45
46
47
48
49
50
# File 'lib/libis/workflow/activerecord/run.rb', line 45

def run(action = :run)
  self.start_date = Time.now
  self.tasks = []
  super action
  close_logger
end

#work_dirObject



38
39
40
41
42
43
# File 'lib/libis/workflow/activerecord/run.rb', line 38

def work_dir
  # noinspection RubyResolve
  dir = File.join(Libis::Workflow::Config.workdir, self.id.to_s)
  FileUtils.mkpath dir unless Dir.exist?(dir)
  dir
end