Module: Raif::Concerns::HasRuntimeDuration

Extended by:
ActiveSupport::Concern
Included in:
Agent, ModelCompletion, Task
Defined in:
app/models/raif/concerns/has_runtime_duration.rb

Instance Method Summary collapse

Instance Method Details

#runtime_durationObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/models/raif/concerns/has_runtime_duration.rb', line 19

def runtime_duration
  duration_in_seconds = runtime_duration_seconds
  return "-" if duration_in_seconds.nil?

  if duration_in_seconds < 1
    "#{(duration_in_seconds * 1000).round}ms"
  elsif duration_in_seconds < 60
    seconds = (duration_in_seconds * 100).round / 100.0
    "#{seconds.to_s.sub(/\.0+\z/, "").sub(/(\.\d*[1-9])0+\z/, "\\1")}s"
  else
    total_seconds = duration_in_seconds.round
    hours = total_seconds / 3600
    minutes = (total_seconds % 3600) / 60
    seconds = total_seconds % 60

    parts = []
    parts << "#{hours}h" if hours.positive?
    parts << "#{minutes}m" if minutes.positive? || hours.positive?
    parts << "#{seconds}s"
    parts.join(" ")
  end
end

#runtime_duration_secondsObject



10
11
12
13
14
15
16
17
# File 'app/models/raif/concerns/has_runtime_duration.rb', line 10

def runtime_duration_seconds
  return if started_at.blank? || runtime_ended_at.blank?

  duration_in_seconds = runtime_ended_at - started_at
  return if duration_in_seconds.negative?

  duration_in_seconds
end

#runtime_ended_atObject



6
7
8
# File 'app/models/raif/concerns/has_runtime_duration.rb', line 6

def runtime_ended_at
  completed_at || failed_at
end