diff --git a/app/assets/javascripts/editor/submissions.js b/app/assets/javascripts/editor/submissions.js index 3cd26502..67efd649 100644 --- a/app/assets/javascripts/editor/submissions.js +++ b/app/assets/javascripts/editor/submissions.js @@ -197,6 +197,14 @@ CodeOceanEditorSubmissions = { Turbolinks.clearCache(); clearTimeout(this.autosaveTimer); Turbolinks.visit(response.redirect); + } else if (response.status === 'container_depleted') { + this.showContainerDepletedMessage(); + $('#submit').one('click', this.submitCode.bind(this)); + } else if (response.message) { + $.flash.danger({ + text: response.message + }); + $('#submit').one('click', this.submitCode.bind(this)); } }) }, diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 5405211b..e5c28827 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -537,6 +537,12 @@ working_time_accumulated: working_time_accumulated}) else redirect_after_submit end + rescue Runner::Error => e + Rails.logger.debug { "Runner error while submitting submission #{@submission.id}: #{e.message}" } + respond_to do |format| + format.html { redirect_to(implement_exercise_path(@submission.exercise)) } + format.json { render(json: {message: I18n.t('exercises.editor.depleted'), status: :container_depleted}) } + end end def transmit_lti_score