apo5698 / helli-grading Goto Github PK
View Code? Open in Web Editor NEWA web-based automatic grading system (for CSC 116@NCSU).
License: MIT License
A web-based automatic grading system (for CSC 116@NCSU).
License: MIT License
Dir.chdir
is a process-based operation (see https://bugs.ruby-lang.org/issues/9785). If multiple Helli::Process
are created concurrently, the server process may not be able to go back to the original directory after the block.
All dependencies are not available.
2020-10-10T07:40:55.915808+00:00 app[web.1]: F, [2020-10-10T07:40:55.915678 #9] FATAL -- : [f3d29577-1f8e-45f2-8559-3737285dfe84]
2020-10-10T07:40:55.915811+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] ActionView::Template::Error (No such file or directory @ rb_sysopen - /app/public/api/dependencies.json):
2020-10-10T07:40:55.915812+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] 1: <div class="mb-2">
2020-10-10T07:40:55.915812+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] 2: <%= link_to('Reload', { controller: 'settings', action: 'reload' }, class: 'btn btn-secondary') %>
2020-10-10T07:40:55.915813+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] 3: <%= link_to('dependencies.json', DependenciesUtil.json, class: 'btn btn-secondary') %>
2020-10-10T07:40:55.915814+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] 4: </div>
2020-10-10T07:40:55.915815+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] 5: <table class="table table-hover">
2020-10-10T07:40:55.915815+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] 6: <thead>
2020-10-10T07:40:55.915816+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84]
2020-10-10T07:40:55.915816+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] app/lib/dependencies_util.rb:18:in `initialize'
2020-10-10T07:40:55.915817+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] app/lib/dependencies_util.rb:18:in `open'
2020-10-10T07:40:55.915817+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] app/lib/dependencies_util.rb:18:in `json'
2020-10-10T07:40:55.915818+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] app/views/settings/_dependencies.html.erb:3
2020-10-10T07:40:55.915818+00:00 app[web.1]: [f3d29577-1f8e-45f2-8559-3737285dfe84] app/views/settings/index.html.erb:19
Compare checksum
2021-02-01T01:10:39.509693+00:00 app[web.1]: I, [2021-02-01T01:10:39.509630 #89] INFO -- : [a84d49f3-7e68-4109-b6f1-6d24af872ea0] Completed 500 Internal Server Error in 38ms (ActiveRecord: 6.3ms | Allocations: 3519)
2021-02-01T01:10:39.510283+00:00 app[web.1]: F, [2021-02-01T01:10:39.510220 #89] FATAL -- : [a84d49f3-7e68-4109-b6f1-6d24af872ea0]
2021-02-01T01:10:39.510287+00:00 app[web.1]: [a84d49f3-7e68-4109-b6f1-6d24af872ea0] Encoding::UndefinedConversionError ("\xE3" from ASCII-8BIT to UTF-8):
2021-02-01T01:10:39.510288+00:00 app[web.1]: [a84d49f3-7e68-4109-b6f1-6d24af872ea0]
2021-02-01T01:10:39.510289+00:00 app[web.1]: [a84d49f3-7e68-4109-b6f1-6d24af872ea0] app/lib/helli/attachment.rb:20:in `write'
2021-02-01T01:10:39.510289+00:00 app[web.1]: [a84d49f3-7e68-4109-b6f1-6d24af872ea0] app/lib/helli/attachment.rb:20:in `block in download'
2021-02-01T01:10:39.510290+00:00 app[web.1]: [a84d49f3-7e68-4109-b6f1-6d24af872ea0] app/lib/helli/attachment.rb:18:in `map'
2021-02-01T01:10:39.510291+00:00 app[web.1]: [a84d49f3-7e68-4109-b6f1-6d24af872ea0] app/lib/helli/attachment.rb:18:in `download'
2021-02-01T01:10:39.510291+00:00 app[web.1]: [a84d49f3-7e68-4109-b6f1-6d24af872ea0] app/lib/helli/attachment.rb:31:in `download_one'
2021-02-01T01:10:39.510292+00:00 app[web.1]: [a84d49f3-7e68-4109-b6f1-6d24af872ea0] app/models/grade_item.rb:87:in `run'
2021-02-01T01:10:39.510292+00:00 app[web.1]: [a84d49f3-7e68-4109-b6f1-6d24af872ea0] app/controllers/api/grade_items_controller.rb:23:in `update'
According to Request Timeout:
The countdown for this 30 second timeout begins after the entire request (all request headers and, if applicable, the request body) has been sent from the router to the dyno. The request must then be processed in the dyno by your application, and a response delivered back to the router, within 30 seconds to avoid the timeout.
Although it will not affect backend tasks running, if a "large" grading is triggered (e.g. checkstyle), HTTP 503 would still be likely to happen:
rails-ujs.js:216 POST http://ags.herokuapp.com/courses/1/assignments/3/grading/6 503 (Service Unavailable)
Consider sending one request for each grade item, not the whole rubric.
Errors should be returned as the second element of the array:
# code above...
error = []
error << ["Total: #{actual} => #{point}"] if something_happen
[[point, '', 0], error]
Also change
to
self.error = capture[1]
Run:
heroku buildpacks:add -i 2 heroku/jvm
Add system.properties
file with:
java.runtime.version=11
2021-02-15T18:19:49.545546+00:00 app[web.1]: I, [2021-02-15T18:19:49.545479 #88] INFO -- : [d3e81ef0-bb88-4ecd-bcb5-463d673a75df] Completed 500 Internal Server Error in 5190ms (ActiveRecord: 28.5ms | Allocations: 6058)
2021-02-15T18:19:49.547353+00:00 app[web.1]: F, [2021-02-15T18:19:49.547286 #88] FATAL -- : [d3e81ef0-bb88-4ecd-bcb5-463d673a75df]
2021-02-15T18:19:49.547354+00:00 app[web.1]: [d3e81ef0-bb88-4ecd-bcb5-463d673a75df] ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: null value in column "exitstatus" violates not-null constraint
2021-02-15T18:19:49.547366+00:00 app[web.1]: DETAIL: Failing row contains (5977, 99, 21, Error, , , null, 0.00, Program runs: Program does not run, 2021-02-15 05:09:05.287818, 2021-02-15 18:19:49.521765, {"Program exits with code ","Output does not match regular expre...).
2021-02-15T18:19:49.547367+00:00 app[web.1]: ):
2021-02-15T18:19:49.547368+00:00 app[web.1]: [d3e81ef0-bb88-4ecd-bcb5-463d673a75df]
2021-02-15T18:19:49.547368+00:00 app[web.1]: [d3e81ef0-bb88-4ecd-bcb5-463d673a75df] app/models/grade_item.rb:123:in `run'
2021-02-15T18:19:49.547369+00:00 app[web.1]: [d3e81ef0-bb88-4ecd-bcb5-463d673a75df] app/controllers/api/grade_items_controller.rb:23:in `update'
AGS Users. (TAs or instructors, NOT STUDENTS)
Has many Course
Course examples:
Belongs to User
Has many Assignment
Assignment examples:
Belongs to Course
Has one Rubric
Has many Participant
Has many Grade
Belongs to Assignment
Participant
is different than Student
because they are generated from the gradesheet of each assignment.
Belongs to Assignment
Has one Grade
Has many Attachment
Belongs to Participant
Might be duplicated with ActiveStorageBlob
Belongs to Participant
A generic grading rubric.
Belongs to Assignment
Has many RubricItem
Rubric items examples:
Has many Criterion
Has many Program
Criterions determine whether a participant should be awarded or deducted points. Examples:
point | expected behavior | actual behavior | feedback |
---|---|---|---|
1 | file is named 'HelloWorld.java' | file is named 'Helloworld.java' | file is incorrectly named |
2 | program compiles | program compiles | |
1 | program runs | program fails to run | exception thrown at line... |
A user can access courses created by others, which is a big problem...
If a student submits nothing for an assignment, this student will not have a GradingItem
, result in missing in the grades export. But the gradesheet contains information of all participants, including those whose status is "No submission" or "Overdue".
Describe the bug
Grading page tags select default key inconsistently every time.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Screenshots
Desktop
Additional context
Possible cause
The default active tag key is defined as
where currentRubricItemId
is set by
However, the order of execution of the async function getHelliApi()
is not guaranteed
Files are always downloaded to a new temporary directory. Create directories using Participant#id
instead.
Ruby uses /
as the pathname separator across all different platforms. And this also fixes RuboCop warning:
RuboCop: Please use
Rails.root.join('path/to')
instead. [Rails/FilePath]
Pathnames with variables can be ignored.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.