Class: Rubydojo::LessonsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/rubydojo/lessons_controller.rb

Instance Method Summary collapse

Instance Method Details

#runObject



10
11
12
13
14
15
16
17
18
19
# File 'app/controllers/rubydojo/lessons_controller.rb', line 10

def run
  code = params[:code].to_s
  eval_result = evaluate_ruby(code)
  
  render json: {
    stdout: eval_result[:stdout],
    result: eval_result[:result],
    error: eval_result[:error]
  }
end

#showObject



5
6
7
8
# File 'app/controllers/rubydojo/lessons_controller.rb', line 5

def show
  @completed_lessons = session[:completed_lessons] || []
  @is_completed = @completed_lessons.include?(@lesson.id.to_s)
end

#validateObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/controllers/rubydojo/lessons_controller.rb', line 21

def validate
  code = params[:code].to_s
  validation_code = @lesson.validation_code
  
  eval_result = evaluate_ruby(code, validation_code)
  
  if eval_result[:error].nil?
    # Mark lesson as completed
    session[:completed_lessons] ||= []
    unless session[:completed_lessons].include?(@lesson.id.to_s)
      session[:completed_lessons] << @lesson.id.to_s
    end
    
    render json: {
      success: true,
      stdout: eval_result[:stdout],
      result: eval_result[:result]
    }
  else
    render json: {
      success: false,
      error: eval_result[:error],
      stdout: eval_result[:stdout]
    }
  end
end