Module: Perilune::Tasks::Mixin::InstanceMethods

Defined in:
lib/perilune/tasks/mixin.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



11
12
13
# File 'lib/perilune/tasks/mixin.rb', line 11

def errors
  @errors
end

#fileObject (readonly)

Returns the value of attribute file.



11
12
13
# File 'lib/perilune/tasks/mixin.rb', line 11

def file
  @file
end

#taskObject (readonly)

Returns the value of attribute task.



11
12
13
# File 'lib/perilune/tasks/mixin.rb', line 11

def task
  @task
end

Instance Method Details

#executeObject



20
21
22
23
24
25
# File 'lib/perilune/tasks/mixin.rb', line 20

def execute
  task.update(state: 'processing')
  operate
rescue StandardError => e
  failure(e.message)
end

#failure(message) ⇒ Object



31
32
33
# File 'lib/perilune/tasks/mixin.rb', line 31

def failure(message)
  @errors = message
end

#initialize(file:, task:) ⇒ Object



15
16
17
18
# File 'lib/perilune/tasks/mixin.rb', line 15

def initialize(file:, task:)
  @file = file
  @task = task
end

#operateObject

Raises:

  • (StandardError)


39
40
41
# File 'lib/perilune/tasks/mixin.rb', line 39

def operate(*)
  raise StandardError, 'operate function is not defined'
end

#success?Boolean



35
36
37
# File 'lib/perilune/tasks/mixin.rb', line 35

def success?
  errors.blank?
end

#tagsObject



27
28
29
# File 'lib/perilune/tasks/mixin.rb', line 27

def tags
  task.tags
end

#tracerObject



57
58
59
60
61
# File 'lib/perilune/tasks/mixin.rb', line 57

def tracer
  @tracer ||= Trifle::Logger.tracer = Trifle::Logger::Tracer::Hash.new(
    key: task.id, reference: task.id, config: tracer_config
  )
end

#tracer_configObject



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/perilune/tasks/mixin.rb', line 43

def tracer_config
  @tracer_config ||= Trifle::Logger::Configuration.new
  @tracer_config.on(:wrapup) do |tracer|
    entry = Perilune::Task.find_by(id: tracer.reference)
    next if entry.nil?

    entry.update(
      tracer_data: tracer.data,
      state: tracer.state
    )
  end
  @tracer_config
end

#track_stats(event:, success:) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
# File 'lib/perilune/tasks/mixin.rb', line 63

def track_stats(event:, success:)
  Trifle::Stats.track(
    key: "perilune::#{event.downcase}", at: Time.zone.now,
    config: Perilune.default.stats_driver_config,
    values: {
      count: 1,
      success: success ? 1 : 0,
      failure: success ? 0 : 1
    }
  )
end