Class: Mumuki::Domain::Submission::Base

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
lib/mumuki/domain/submission/base.rb

Direct Known Subclasses

ConsoleSubmission, PersistentSubmission, Question

Constant Summary collapse

ATTRIBUTES =
[:solution, :status, :result, :expectation_results, :feedback, :test_results,
:submission_id, :queries, :query_results, :manual_evaluation_comment]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_attributes(*args) ⇒ Object



13
14
15
# File 'lib/mumuki/domain/submission/base.rb', line 13

def self.from_attributes(*args)
  new ATTRIBUTES.zip(args).to_h
end

.mapping_attributesObject



17
18
19
# File 'lib/mumuki/domain/submission/base.rb', line 17

def self.mapping_attributes
  ATTRIBUTES
end

Instance Method Details

#evaluate!(assignment) ⇒ Object



29
30
31
32
33
34
# File 'lib/mumuki/domain/submission/base.rb', line 29

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

#idObject



36
37
38
# File 'lib/mumuki/domain/submission/base.rb', line 36

def id
  @id ||= SecureRandom.hex(8)
end

#run!(assignment, evaluation) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/mumuki/domain/submission/base.rb', line 21

def run!(assignment, evaluation)
  save_submission! assignment
  results = evaluation.evaluate! assignment, self
  save_results! results, assignment
  notify_results! results, assignment
  results
end