diff --git a/lib/runner.rb b/lib/runner.rb --- a/lib/runner.rb +++ b/lib/runner.rb @@ -25,16 +25,21 @@ end def grade_problem(problem, options={}) - users = User.find(:all) - users.each do |u| + User.find_each do |u| puts "user: #{u.login}" if options[:user_conditions]!=nil con_proc = options[:user_conditions] next if not con_proc.call(u) end - last_sub = Submission.find_last_by_user_and_problem(u.id,problem.id) - if last_sub!=nil - @engine.grade(last_sub) + if options[:all_sub] + Submission.where(user_id: u.id,problem_id: problem.id).find_each do |sub| + @engine.grade(sub) + end + else + last_sub = Submission.find_last_by_user_and_problem(u.id,problem.id) + if last_sub!=nil + @engine.grade(last_sub) + end end end end