class Mumuki::Domain::Submission::Base

Constants

ATTRIBUTES

Attributes

client_result[RW]

Public Class Methods

from_attributes(*args) click to toggle source
# File lib/mumuki/domain/submission/base.rb, line 14
def self.from_attributes(*args)
  new ATTRIBUTES.zip(args).to_h
end
mapping_attributes() click to toggle source
# File lib/mumuki/domain/submission/base.rb, line 18
def self.mapping_attributes
  ATTRIBUTES
end

Public Instance Methods

dry_run!(assignment, _evaluation) click to toggle source

By default evaluation strategy is ignored. Subclasses may override this behaviour

# File lib/mumuki/domain/submission/base.rb, line 32
def dry_run!(assignment, _evaluation)
  evaluate! assignment
end
evaluate!(assignment) click to toggle source
# File lib/mumuki/domain/submission/base.rb, line 41
def evaluate!(assignment)
  try_evaluate! assignment
rescue => e
  Rails.logger.error "Evaluation failed: #{e} \n#{e.backtrace.join("\n")}"
  {status: :errored, result: e.message}
end
id() click to toggle source
# File lib/mumuki/domain/submission/base.rb, line 48
def id
  @id ||= SecureRandom.hex(8)
end
run!(assignment, evaluation) click to toggle source
# File lib/mumuki/domain/submission/base.rb, line 22
def run!(assignment, evaluation)
  save_submission! assignment
  results = dry_run! assignment, evaluation
  save_results! results, assignment
  notify_results! results, assignment
  results
end
with_client_result(result) click to toggle source
# File lib/mumuki/domain/submission/base.rb, line 36
def with_client_result(result)
  self.client_result = result if result.present?
  self
end

Private Instance Methods

notify_results!(results, assignment) click to toggle source
# File lib/mumuki/domain/submission/base.rb, line 64
def notify_results!(results, assignment)
  assignment.notify!
end
save_results!(results, assignment) click to toggle source
# File lib/mumuki/domain/submission/base.rb, line 58
def save_results!(results, assignment)
  assignment.assign_attributes results
  assignment.increment_attempts!
  assignment.save! results
end
save_submission!(assignment) click to toggle source
# File lib/mumuki/domain/submission/base.rb, line 54
def save_submission!(assignment)
  assignment.save!
end