Description:
Merge pull request #25 from nattee/master
update outdated gem
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r769:6eb8c22c844a - - 13 files changed: 186 inserted, 158 deleted
@@ -0,0 +1,1 | |||
|
1 | + grader |
@@ -0,0 +1,1 | |||
|
1 | + ruby-2.6.3 |
@@ -1,35 +1,35 | |||
|
1 | 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. |
|
2 | 2 | # |
|
3 | 3 | # If you find yourself ignoring temporary files generated by your text editor |
|
4 | 4 | # or operating system, you probably want to add a global ignore instead: |
|
5 | 5 | # git config --global core.excludesfile ~/.gitignore_global |
|
6 | 6 | |
|
7 | 7 | # Ignore bundler config |
|
8 | 8 | /.bundle |
|
9 | 9 | |
|
10 | 10 | # Ignore the default SQLite database. |
|
11 | 11 | /db/*.sqlite3 |
|
12 | 12 | |
|
13 | 13 | # Ignore all logfiles and tempfiles. |
|
14 | 14 | /log/*.log |
|
15 | 15 | /tmp |
|
16 | 16 | |
|
17 | 17 | *~ |
|
18 | 18 | |
|
19 | 19 | /vendor/plugins/rails_upgrade |
|
20 | 20 | |
|
21 | 21 | #ignore public assets??? |
|
22 | 22 | /public/assets |
|
23 | 23 | /public |
|
24 | 24 | |
|
25 | 25 | /data |
|
26 | 26 | |
|
27 | 27 | #ignore .orig and .swp |
|
28 | 28 | *.orig |
|
29 | 29 | *.swp |
|
30 | 30 | |
|
31 | 31 | #ignore rvm setting file |
|
32 | - .ruby-gemset | |
|
33 | - .ruby-version | |
|
32 | + #.ruby-gemset | |
|
33 | + #.ruby-version | |
|
34 | 34 | |
|
35 | 35 | /config/secrets.yml |
@@ -15,78 +15,79 | |||
|
15 | 15 | gem 'sqlite3' |
|
16 | 16 | #for dumping database into yaml |
|
17 | 17 | gem 'yaml_db' |
|
18 | 18 | |
|
19 | 19 | # Gems used only for assets and not required |
|
20 | 20 | # in production environments by default. |
|
21 | 21 | gem 'sass-rails' |
|
22 | 22 | gem 'coffee-rails' |
|
23 | 23 | |
|
24 | 24 | # See https://github.com/sstephenson/execjs#readme for more supported runtimes |
|
25 | 25 | # gem 'therubyracer', :platforms => :ruby |
|
26 | 26 | |
|
27 | 27 | gem 'uglifier' |
|
28 | 28 | |
|
29 | 29 | gem 'haml' |
|
30 | 30 | gem 'haml-rails' |
|
31 | 31 | # gem 'prototype-rails' |
|
32 | 32 | |
|
33 | 33 | # To use ActiveModel has_secure_password |
|
34 | 34 | # gem 'bcrypt-ruby', '~> 3.0.0' |
|
35 | 35 | |
|
36 | 36 | # To use Jbuilder templates for JSON |
|
37 | 37 | # gem 'jbuilder' |
|
38 | 38 | |
|
39 | 39 | # Use unicorn as the app server |
|
40 | 40 | # gem 'unicorn' |
|
41 | 41 | |
|
42 | 42 | # Deploy with Capistrano |
|
43 | 43 | # gem 'capistrano' |
|
44 | 44 | |
|
45 | 45 | # To use debugger |
|
46 | 46 | # gem 'debugger' |
|
47 | 47 | # |
|
48 | 48 | |
|
49 | 49 | #in-place editor |
|
50 | 50 | gem 'best_in_place', '~> 3.0.1' |
|
51 | 51 | |
|
52 | 52 | # jquery addition |
|
53 | 53 | gem 'jquery-rails' |
|
54 | 54 | gem 'jquery-ui-rails' |
|
55 | 55 | gem 'jquery-timepicker-addon-rails' |
|
56 | 56 | gem 'jquery-tablesorter' |
|
57 | 57 | gem 'jquery-countdown-rails' |
|
58 | 58 | |
|
59 | 59 | #syntax highlighter |
|
60 | 60 | gem 'rouge' |
|
61 | 61 | |
|
62 | 62 | #bootstrap add-ons |
|
63 |
- gem 'bootstrap-sass', '~> 3. |
|
|
63 | + gem 'bootstrap-sass', '~> 3.4.1' | |
|
64 | + gem 'sassc-rails', '>= 2.1.0' | |
|
64 | 65 | gem 'bootstrap-switch-rails' |
|
65 | 66 | gem 'bootstrap-toggle-rails' |
|
66 | 67 | gem 'autoprefixer-rails' |
|
67 | 68 | gem 'momentjs-rails' |
|
68 | 69 | gem 'rails_bootstrap_sortable' |
|
69 | 70 | gem 'bootstrap-datepicker-rails' |
|
70 | 71 | gem 'bootstrap3-datetimepicker-rails' |
|
71 | 72 | gem 'jquery-datatables-rails' |
|
72 | 73 | |
|
73 | 74 | #----------- user interface ----------------- |
|
74 | 75 | #select 2 |
|
75 | 76 | gem 'select2-rails' |
|
76 | 77 | #ace editor |
|
77 | 78 | gem 'ace-rails-ap' |
|
78 | 79 | #paginator |
|
79 | 80 | gem 'will_paginate', '~> 3.0.7' |
|
80 | 81 | |
|
81 | 82 | gem 'mail' |
|
82 | 83 | gem 'rdiscount' |
|
83 | 84 | gem 'dynamic_form' |
|
84 | 85 | gem 'in_place_editing' |
|
85 | 86 | gem 'verification', :git => 'https://github.com/sikachu/verification.git' |
|
86 | 87 | |
|
87 | 88 | |
|
88 | 89 | #---------------- testiing ----------------------- |
|
89 | 90 | gem 'minitest-reporters' |
|
90 | 91 | |
|
91 | 92 | #---------------- for console -------------------- |
|
92 | 93 | gem 'fuzzy-string-match' |
@@ -1,247 +1,267 | |||
|
1 | 1 | GIT |
|
2 | 2 | remote: https://github.com/sikachu/verification.git |
|
3 | 3 | revision: ff31697b940d7b0e2ec65f08764215c96104e76d |
|
4 | 4 | specs: |
|
5 | 5 | verification (1.0.3) |
|
6 | 6 | actionpack (>= 3.0.0, < 5.1) |
|
7 | 7 | activesupport (>= 3.0.0, < 5.1) |
|
8 | 8 | |
|
9 | 9 | GEM |
|
10 | 10 | remote: https://rubygems.org/ |
|
11 | 11 | specs: |
|
12 | 12 | RubyInline (3.12.4) |
|
13 | 13 | ZenTest (~> 4.3) |
|
14 |
- ZenTest (4.11. |
|
|
15 |
- ace-rails-ap (4. |
|
|
16 |
- actionmailer (4.2. |
|
|
17 |
- actionpack (= 4.2. |
|
|
18 |
- actionview (= 4.2. |
|
|
19 |
- activejob (= 4.2. |
|
|
14 | + ZenTest (4.11.2) | |
|
15 | + ace-rails-ap (4.2) | |
|
16 | + actionmailer (4.2.11.1) | |
|
17 | + actionpack (= 4.2.11.1) | |
|
18 | + actionview (= 4.2.11.1) | |
|
19 | + activejob (= 4.2.11.1) | |
|
20 | 20 | mail (~> 2.5, >= 2.5.4) |
|
21 | 21 | rails-dom-testing (~> 1.0, >= 1.0.5) |
|
22 |
- actionpack (4.2. |
|
|
23 |
- actionview (= 4.2. |
|
|
24 |
- activesupport (= 4.2. |
|
|
22 | + actionpack (4.2.11.1) | |
|
23 | + actionview (= 4.2.11.1) | |
|
24 | + activesupport (= 4.2.11.1) | |
|
25 | 25 | rack (~> 1.6) |
|
26 | 26 | rack-test (~> 0.6.2) |
|
27 | 27 | rails-dom-testing (~> 1.0, >= 1.0.5) |
|
28 | 28 | rails-html-sanitizer (~> 1.0, >= 1.0.2) |
|
29 |
- actionview (4.2. |
|
|
30 |
- activesupport (= 4.2. |
|
|
29 | + actionview (4.2.11.1) | |
|
30 | + activesupport (= 4.2.11.1) | |
|
31 | 31 | builder (~> 3.1) |
|
32 | 32 | erubis (~> 2.7.0) |
|
33 | 33 | rails-dom-testing (~> 1.0, >= 1.0.5) |
|
34 |
- rails-html-sanitizer (~> 1.0, >= 1.0. |
|
|
35 |
- activejob (4.2. |
|
|
36 |
- activesupport (= 4.2. |
|
|
34 | + rails-html-sanitizer (~> 1.0, >= 1.0.3) | |
|
35 | + activejob (4.2.11.1) | |
|
36 | + activesupport (= 4.2.11.1) | |
|
37 | 37 | globalid (>= 0.3.0) |
|
38 |
- activemodel (4.2. |
|
|
39 |
- activesupport (= 4.2. |
|
|
38 | + activemodel (4.2.11.1) | |
|
39 | + activesupport (= 4.2.11.1) | |
|
40 | 40 | builder (~> 3.1) |
|
41 |
- activerecord (4.2. |
|
|
42 |
- activemodel (= 4.2. |
|
|
43 |
- activesupport (= 4.2. |
|
|
41 | + activerecord (4.2.11.1) | |
|
42 | + activemodel (= 4.2.11.1) | |
|
43 | + activesupport (= 4.2.11.1) | |
|
44 | 44 | arel (~> 6.0) |
|
45 |
- activerecord-session_store (1. |
|
|
46 |
- actionpack (>= 4.0 |
|
|
47 |
- activerecord (>= 4.0 |
|
|
45 | + activerecord-session_store (1.1.3) | |
|
46 | + actionpack (>= 4.0) | |
|
47 | + activerecord (>= 4.0) | |
|
48 | 48 | multi_json (~> 1.11, >= 1.11.2) |
|
49 | 49 | rack (>= 1.5.2, < 3) |
|
50 |
- railties (>= 4.0 |
|
|
51 |
- activesupport (4.2. |
|
|
50 | + railties (>= 4.0) | |
|
51 | + activesupport (4.2.11.1) | |
|
52 | 52 | i18n (~> 0.7) |
|
53 | - json (~> 1.7, >= 1.7.7) | |
|
54 | 53 | minitest (~> 5.1) |
|
55 | 54 | thread_safe (~> 0.3, >= 0.3.4) |
|
56 | 55 | tzinfo (~> 1.1) |
|
57 | 56 | ansi (1.5.0) |
|
58 | 57 | arel (6.0.4) |
|
59 |
- autoprefixer-rails ( |
|
|
58 | + autoprefixer-rails (9.5.1.1) | |
|
60 | 59 | execjs |
|
61 | 60 | best_in_place (3.0.3) |
|
62 | 61 | actionpack (>= 3.2) |
|
63 | 62 | railties (>= 3.2) |
|
64 |
- bootstrap-datepicker-rails (1. |
|
|
63 | + bootstrap-datepicker-rails (1.8.0.1) | |
|
65 | 64 | railties (>= 3.0) |
|
66 |
- bootstrap-sass (3. |
|
|
67 | - sass (~> 3.2) | |
|
68 | - bootstrap-switch-rails (3.3.3) | |
|
65 | + bootstrap-sass (3.4.1) | |
|
66 | + autoprefixer-rails (>= 5.2.1) | |
|
67 | + sassc (>= 2.0.0) | |
|
68 | + bootstrap-switch-rails (3.3.4) | |
|
69 | 69 | bootstrap-toggle-rails (2.2.1.0) |
|
70 | 70 | bootstrap3-datetimepicker-rails (4.17.47) |
|
71 | 71 | momentjs-rails (>= 2.8.1) |
|
72 |
- builder (3.2. |
|
|
73 |
- coffee-rails (4.2. |
|
|
72 | + builder (3.2.3) | |
|
73 | + coffee-rails (4.2.2) | |
|
74 | 74 | coffee-script (>= 2.2.0) |
|
75 |
- railties (>= 4.0.0 |
|
|
75 | + railties (>= 4.0.0) | |
|
76 | 76 | coffee-script (2.4.1) |
|
77 | 77 | coffee-script-source |
|
78 | 78 | execjs |
|
79 | 79 | coffee-script-source (1.12.2) |
|
80 |
- concurrent-ruby (1. |
|
|
80 | + concurrent-ruby (1.1.5) | |
|
81 | + crass (1.0.4) | |
|
81 | 82 | dynamic_form (1.1.4) |
|
82 | 83 | erubis (2.7.0) |
|
83 | 84 | execjs (2.7.0) |
|
84 | - fuzzy-string-match (1.0.0) | |
|
85 | + ffi (1.11.1) | |
|
86 | + fuzzy-string-match (1.0.1) | |
|
85 | 87 | RubyInline (>= 3.8.6) |
|
86 |
- globalid (0. |
|
|
87 |
- activesupport (>= 4. |
|
|
88 |
- haml ( |
|
|
88 | + globalid (0.4.2) | |
|
89 | + activesupport (>= 4.2.0) | |
|
90 | + haml (5.1.0) | |
|
91 | + temple (>= 0.8.0) | |
|
89 | 92 | tilt |
|
90 |
- haml-rails ( |
|
|
93 | + haml-rails (1.0.0) | |
|
91 | 94 | actionpack (>= 4.0.1) |
|
92 | 95 | activesupport (>= 4.0.1) |
|
93 |
- haml (>= 4.0.6, < |
|
|
96 | + haml (>= 4.0.6, < 6.0) | |
|
94 | 97 | html2haml (>= 1.0.1) |
|
95 | 98 | railties (>= 4.0.1) |
|
96 |
- html2haml (2. |
|
|
99 | + html2haml (2.2.0) | |
|
97 | 100 | erubis (~> 2.7.0) |
|
98 |
- haml ( |
|
|
99 |
- nokogiri ( |
|
|
101 | + haml (>= 4.0, < 6) | |
|
102 | + nokogiri (>= 1.6.0) | |
|
100 | 103 | ruby_parser (~> 3.5) |
|
101 |
- i18n (0. |
|
|
104 | + i18n (0.9.5) | |
|
105 | + concurrent-ruby (~> 1.0) | |
|
102 | 106 | in_place_editing (1.2.0) |
|
103 | 107 | jquery-countdown-rails (2.0.2) |
|
104 | 108 | jquery-datatables-rails (3.4.0) |
|
105 | 109 | actionpack (>= 3.1) |
|
106 | 110 | jquery-rails |
|
107 | 111 | railties (>= 3.1) |
|
108 | 112 | sass-rails |
|
109 |
- jquery-rails (4. |
|
|
113 | + jquery-rails (4.3.3) | |
|
110 | 114 | rails-dom-testing (>= 1, < 3) |
|
111 | 115 | railties (>= 4.2.0) |
|
112 | 116 | thor (>= 0.14, < 2.0) |
|
113 |
- jquery-tablesorter (1.2 |
|
|
117 | + jquery-tablesorter (1.26.1) | |
|
114 | 118 | railties (>= 3.2, < 6) |
|
115 | 119 | jquery-timepicker-addon-rails (1.4.1) |
|
116 | 120 | railties (>= 3.1) |
|
117 | 121 | jquery-ui-rails (6.0.1) |
|
118 | 122 | railties (>= 3.2.16) |
|
119 |
- |
|
|
120 | - loofah (2.0.3) | |
|
123 | + loofah (2.2.3) | |
|
124 | + crass (~> 1.0.2) | |
|
121 | 125 | nokogiri (>= 1.5.9) |
|
122 |
- mail (2. |
|
|
123 |
- mi |
|
|
124 |
- mi |
|
|
125 | - mime-types-data (~> 3.2015) | |
|
126 | - mime-types-data (3.2016.0521) | |
|
127 |
- mini |
|
|
128 | - minitest (5.10.1) | |
|
129 | - minitest-reporters (1.1.13) | |
|
126 | + mail (2.7.1) | |
|
127 | + mini_mime (>= 0.1.1) | |
|
128 | + mini_mime (1.0.1) | |
|
129 | + mini_portile2 (2.4.0) | |
|
130 | + minitest (5.11.3) | |
|
131 | + minitest-reporters (1.3.6) | |
|
130 | 132 | ansi |
|
131 | 133 | builder |
|
132 | 134 | minitest (>= 5.0) |
|
133 | 135 | ruby-progressbar |
|
134 |
- momentjs-rails (2. |
|
|
136 | + momentjs-rails (2.20.1) | |
|
135 | 137 | railties (>= 3.1) |
|
136 |
- multi_json (1.1 |
|
|
137 |
- mysql2 (0. |
|
|
138 |
- nokogiri (1. |
|
|
139 |
- mini_portile2 (~> 2. |
|
|
140 |
- rack (1.6. |
|
|
138 | + multi_json (1.13.1) | |
|
139 | + mysql2 (0.5.2) | |
|
140 | + nokogiri (1.10.3) | |
|
141 | + mini_portile2 (~> 2.4.0) | |
|
142 | + rack (1.6.11) | |
|
141 | 143 | rack-test (0.6.3) |
|
142 | 144 | rack (>= 1.0) |
|
143 |
- rails (4.2. |
|
|
144 |
- actionmailer (= 4.2. |
|
|
145 |
- actionpack (= 4.2. |
|
|
146 |
- actionview (= 4.2. |
|
|
147 |
- activejob (= 4.2. |
|
|
148 |
- activemodel (= 4.2. |
|
|
149 |
- activerecord (= 4.2. |
|
|
150 |
- activesupport (= 4.2. |
|
|
145 | + rails (4.2.11.1) | |
|
146 | + actionmailer (= 4.2.11.1) | |
|
147 | + actionpack (= 4.2.11.1) | |
|
148 | + actionview (= 4.2.11.1) | |
|
149 | + activejob (= 4.2.11.1) | |
|
150 | + activemodel (= 4.2.11.1) | |
|
151 | + activerecord (= 4.2.11.1) | |
|
152 | + activesupport (= 4.2.11.1) | |
|
151 | 153 | bundler (>= 1.3.0, < 2.0) |
|
152 |
- railties (= 4.2. |
|
|
154 | + railties (= 4.2.11.1) | |
|
153 | 155 | sprockets-rails |
|
154 | 156 | rails-deprecated_sanitizer (1.0.3) |
|
155 | 157 | activesupport (>= 4.2.0.alpha) |
|
156 |
- rails-dom-testing (1.0. |
|
|
157 |
- activesupport (>= 4.2.0 |
|
|
158 | + rails-dom-testing (1.0.9) | |
|
159 | + activesupport (>= 4.2.0, < 5.0) | |
|
158 | 160 | nokogiri (~> 1.6) |
|
159 | 161 | rails-deprecated_sanitizer (>= 1.0.1) |
|
160 |
- rails-html-sanitizer (1.0. |
|
|
161 |
- loofah (~> 2. |
|
|
162 |
- rails_bootstrap_sortable (2.0. |
|
|
162 | + rails-html-sanitizer (1.0.4) | |
|
163 | + loofah (~> 2.2, >= 2.2.2) | |
|
164 | + rails_bootstrap_sortable (2.0.6) | |
|
163 | 165 | momentjs-rails (>= 2.8.3) |
|
164 |
- railties (4.2. |
|
|
165 |
- actionpack (= 4.2. |
|
|
166 |
- activesupport (= 4.2. |
|
|
166 | + railties (4.2.11.1) | |
|
167 | + actionpack (= 4.2.11.1) | |
|
168 | + activesupport (= 4.2.11.1) | |
|
167 | 169 | rake (>= 0.8.7) |
|
168 | 170 | thor (>= 0.18.1, < 2.0) |
|
169 |
- rake (12. |
|
|
171 | + rake (12.3.2) | |
|
172 | + rb-fsevent (0.10.3) | |
|
173 | + rb-inotify (0.10.0) | |
|
174 | + ffi (~> 1.0) | |
|
170 | 175 | rdiscount (2.2.0.1) |
|
171 |
- rouge ( |
|
|
172 |
- ruby-progressbar (1. |
|
|
173 |
- ruby_parser (3. |
|
|
174 |
- sexp_processor (~> 4. |
|
|
175 |
- sass (3.4 |
|
|
176 |
- |
|
|
176 | + rouge (3.3.0) | |
|
177 | + ruby-progressbar (1.10.0) | |
|
178 | + ruby_parser (3.13.1) | |
|
179 | + sexp_processor (~> 4.9) | |
|
180 | + sass (3.7.4) | |
|
181 | + sass-listen (~> 4.0.0) | |
|
182 | + sass-listen (4.0.0) | |
|
183 | + rb-fsevent (~> 0.9, >= 0.9.4) | |
|
184 | + rb-inotify (~> 0.9, >= 0.9.7) | |
|
185 | + sass-rails (5.0.7) | |
|
177 | 186 | railties (>= 4.0.0, < 6) |
|
178 | 187 | sass (~> 3.1) |
|
179 | 188 | sprockets (>= 2.8, < 4.0) |
|
180 | 189 | sprockets-rails (>= 2.0, < 4.0) |
|
181 | 190 | tilt (>= 1.1, < 3) |
|
191 | + sassc (2.0.1) | |
|
192 | + ffi (~> 1.9) | |
|
193 | + rake | |
|
194 | + sassc-rails (2.1.1) | |
|
195 | + railties (>= 4.0.0) | |
|
196 | + sassc (>= 2.0) | |
|
197 | + sprockets (> 3.0) | |
|
198 | + sprockets-rails | |
|
199 | + tilt | |
|
182 | 200 | select2-rails (4.0.3) |
|
183 | 201 | thor (~> 0.14) |
|
184 |
- sexp_processor (4. |
|
|
185 |
- sprockets (3.7. |
|
|
202 | + sexp_processor (4.12.0) | |
|
203 | + sprockets (3.7.2) | |
|
186 | 204 | concurrent-ruby (~> 1.0) |
|
187 | 205 | rack (> 1, < 3) |
|
188 |
- sprockets-rails (3.2. |
|
|
206 | + sprockets-rails (3.2.1) | |
|
189 | 207 | actionpack (>= 4.0) |
|
190 | 208 | activesupport (>= 4.0) |
|
191 | 209 | sprockets (>= 3.0.0) |
|
192 |
- sqlite3 (1. |
|
|
193 |
- t |
|
|
194 |
- th |
|
|
195 | - tilt (2.0.5) | |
|
196 |
- t |
|
|
210 | + sqlite3 (1.4.1) | |
|
211 | + temple (0.8.1) | |
|
212 | + thor (0.20.3) | |
|
213 | + thread_safe (0.3.6) | |
|
214 | + tilt (2.0.9) | |
|
215 | + tzinfo (1.2.5) | |
|
197 | 216 | thread_safe (~> 0.1) |
|
198 |
- uglifier ( |
|
|
217 | + uglifier (4.1.20) | |
|
199 | 218 | execjs (>= 0.3.0, < 3) |
|
200 | 219 | will_paginate (3.0.12) |
|
201 |
- yaml_db (0. |
|
|
202 |
- rails (>= 3.0 |
|
|
220 | + yaml_db (0.7.0) | |
|
221 | + rails (>= 3.0) | |
|
203 | 222 | rake (>= 0.8.7) |
|
204 | 223 | |
|
205 | 224 | PLATFORMS |
|
206 | 225 | ruby |
|
207 | 226 | |
|
208 | 227 | DEPENDENCIES |
|
209 | 228 | ace-rails-ap |
|
210 | 229 | activerecord-session_store |
|
211 | 230 | autoprefixer-rails |
|
212 | 231 | best_in_place (~> 3.0.1) |
|
213 | 232 | bootstrap-datepicker-rails |
|
214 |
- bootstrap-sass (~> 3. |
|
|
233 | + bootstrap-sass (~> 3.4.1) | |
|
215 | 234 | bootstrap-switch-rails |
|
216 | 235 | bootstrap-toggle-rails |
|
217 | 236 | bootstrap3-datetimepicker-rails |
|
218 | 237 | coffee-rails |
|
219 | 238 | dynamic_form |
|
220 | 239 | fuzzy-string-match |
|
221 | 240 | haml |
|
222 | 241 | haml-rails |
|
223 | 242 | in_place_editing |
|
224 | 243 | jquery-countdown-rails |
|
225 | 244 | jquery-datatables-rails |
|
226 | 245 | jquery-rails |
|
227 | 246 | jquery-tablesorter |
|
228 | 247 | jquery-timepicker-addon-rails |
|
229 | 248 | jquery-ui-rails |
|
230 | 249 | |
|
231 | 250 | minitest-reporters |
|
232 | 251 | momentjs-rails |
|
233 | 252 | mysql2 |
|
234 | 253 | rails (~> 4.2.0) |
|
235 | 254 | rails_bootstrap_sortable |
|
236 | 255 | rdiscount |
|
237 | 256 | rouge |
|
238 | 257 | sass-rails |
|
258 | + sassc-rails (>= 2.1.0) | |
|
239 | 259 | select2-rails |
|
240 | 260 | sqlite3 |
|
241 | 261 | uglifier |
|
242 | 262 | verification! |
|
243 | 263 | will_paginate (~> 3.0.7) |
|
244 | 264 | yaml_db |
|
245 | 265 | |
|
246 | 266 | BUNDLED WITH |
|
247 |
- 1.1 |
|
|
267 | + 1.17.2 |
@@ -6,99 +6,97 | |||
|
6 | 6 | 2. Install RVM. cafe-grader runs on Ruby on Rails and the best way to install it is to use RVM. |
|
7 | 7 | 3. Install necessary package for the system |
|
8 | 8 | 4. Install cafe-grader from github |
|
9 | 9 | 5. Deploy cafe-grader on apache with Phusion Passenger |
|
10 | 10 | |
|
11 | 11 | Very important!!! All commands should be run from a normal user. |
|
12 | 12 | |
|
13 | 13 | The detail of each step are provided as follows. |
|
14 | 14 | |
|
15 | 15 | === 1. Install MySQL 5 |
|
16 | 16 | |
|
17 | 17 | Install MySQL server for the server. |
|
18 | 18 | |
|
19 | 19 | cafe@grader:~$ sudo apt install mysql-server |
|
20 | 20 | |
|
21 | 21 | Next, we will connect to mysql as root and set up the database. You can choose your DATABASENAME, USERNAME and PASSWORD as you wish. |
|
22 | 22 | |
|
23 | 23 | cafe@grader:~$ sudo mysql -u root |
|
24 | 24 | |
|
25 | 25 | mysql> create database DATABASENAME; |
|
26 | 26 | Query OK, 1 row affected (0.00 sec) |
|
27 | 27 | |
|
28 | 28 | mysql> grant all privileges on DATABASENAME.* to USERNAME@localhost identified by 'PASSWORD'; |
|
29 | 29 | Query OK, 0 rows affected, 1 warning (0.00 sec) |
|
30 | 30 | |
|
31 | 31 | mysql> flush privileges; |
|
32 | 32 | Query OK, 0 rows affected (0.00 sec) |
|
33 | 33 | |
|
34 | 34 | === 2. Install RVM |
|
35 | 35 | |
|
36 | 36 | Since Ubuntu has dedicated package for RVM we will use that. Just follow instruction given in https://github.com/rvm/ubuntu_rvm. For your convenience, the step are reproduced here. |
|
37 | 37 | |
|
38 | 38 | First, we install necessary package for installing RVM. |
|
39 | 39 | |
|
40 | 40 | cafe@grader:~$ sudo apt install software-properties-common |
|
41 | 41 | |
|
42 | 42 | Second, we add the custom PPA, update the system and install RVM. |
|
43 | 43 | |
|
44 | 44 | cafe@grader:~$ sudo apt-add-repository -y ppa:rael-gc/rvm |
|
45 | 45 | cafe@grader:~$ sudo apt-get update |
|
46 | 46 | cafe@grader:~$ sudo apt-get install rvm |
|
47 | 47 | |
|
48 | 48 | This is very important. You have to logout and login again since RVM change a lots of system. |
|
49 | 49 | |
|
50 | 50 | If you are using GUI version of Ubuntu, be sure to have Gnome Terminal (or any other terminal you are using) perform login every time. This can be done by mark the check box "Run command as a login shell" in Gnome terminal or by adding --login to bash. |
|
51 | 51 | |
|
52 | 52 | === 3. Install necessary package |
|
53 | 53 | |
|
54 |
- cafe@grader:~$ sudo apt install libmysqlclient-dev default-jdk unzip nodejs php |
|
|
55 | - | |
|
56 | - curl build-essential | |
|
54 | + cafe@grader:~$ sudo apt install libmysqlclient-dev default-jdk unzip nodejs php-cli apache2 dirmngr gnupg apache2-dev | |
|
57 | 55 | |
|
58 | 56 | === 4. Install cafe-grader |
|
59 | 57 | |
|
60 | 58 | First, ensure that RVM is installed correctly. |
|
61 | 59 | |
|
62 | 60 | cafe@grader:~$ rvm |
|
63 | 61 | |
|
64 | 62 | If you get a result similar to this. |
|
65 | 63 | |
|
66 | 64 | Command 'rvm' not found, but there are 21 similar ones. |
|
67 | 65 | |
|
68 | 66 | It is very likely that you have not re-login or you are using bash without --login. Please do so and re-read the installation of RVM on Ubuntu https://github.com/rvm/ubuntu_rvm again. |
|
69 | 67 | |
|
70 | 68 | Next, we will let the install script do the work of installing cafe-grader. Please prepare the DATABASENAME, USERNAME and PASSWORD as the script will ask for that. Make sure that you run the script from the home directory of the user. |
|
71 | 69 | |
|
72 | 70 | cafe@grader:~$ wget https://github.com/cafe-grader-team/cafe-grader-judge-scripts/raw/master/installer/install.sh |
|
73 | 71 | cafe@grader:~$ . ./install.sh |
|
74 | 72 | |
|
75 | 73 | After installation is finished, grader is ready to run in development mode via WEBrick. We will try that by the following command which will start a grader accessible via http://localhost:3000/. You can try logging in to the system and verify that it is actually work. |
|
76 | 74 | |
|
77 | 75 | cafe@grader:~/cafe_grader/web$ rails s |
|
78 | 76 | |
|
79 | 77 | If Everything is OK, stop the WEBrick by Ctrl-C. |
|
80 | 78 | |
|
81 | 79 | We are almost done. The last step is to set up apache and Phusion so that cafe-grader is served by apache. |
|
82 | 80 | |
|
83 | 81 | === 5. Deploy cafe-grader on Phusion passenger via apache |
|
84 | 82 | |
|
85 | 83 | This will install a Passenger mod for apache. You can start by visiting https://www.phusionpassenger.com/library/walkthroughs/deploy/ruby/ownserver/apache/oss/install_passenger_main.html and fllow through the guide. We have reproduce the step here for Ubuntu 18.04. For other version, please select the appropriate one on the previous link. |
|
86 | 84 | |
|
87 | 85 | The deploy is divided into two parts: Installing Passenger and deploying the app. |
|
88 | 86 | |
|
89 | 87 | ==== 5.1. Installing Passenger as a mod for apache via PPA and enable it. |
|
90 | 88 | |
|
91 | 89 | cafe@grader:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7 |
|
92 | 90 | cafe@grader:~$ sudo apt-get install -y apt-transport-https ca-certificates |
|
93 | 91 | cafe@grader:~$ sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger bionic main > /etc/apt/sources.list.d/passenger.list' |
|
94 | 92 | cafe@grader:~$ sudo apt-get update |
|
95 | 93 | cafe@grader:~$ sudo apt-get install -y libapache2-mod-passenger |
|
96 | 94 | cafe@grader:~$ sudo a2enmod passenger |
|
97 | 95 | |
|
98 | 96 | |
|
99 | 97 | cafe@grader:~$ sudo apache2ctl restart |
|
100 | 98 | |
|
101 | 99 | Finally, we should check that passenger is installed correctly. Run the following command and fix anything as suggested by the command. |
|
102 | 100 | |
|
103 | 101 | cafe@grader:~$ sudo /usr/bin/passenger-config validate-install |
|
104 | 102 |
@@ -259,52 +259,52 | |||
|
259 | 259 | return false |
|
260 | 260 | end |
|
261 | 261 | end |
|
262 | 262 | |
|
263 | 263 | def change_date_added |
|
264 | 264 | problems = get_problems_from_params |
|
265 | 265 | date = Date.parse(params[:date_added]) |
|
266 | 266 | problems.each do |p| |
|
267 | 267 | p.date_added = date |
|
268 | 268 | p.save |
|
269 | 269 | end |
|
270 | 270 | end |
|
271 | 271 | |
|
272 | 272 | def add_to_contest |
|
273 | 273 | problems = get_problems_from_params |
|
274 | 274 | contest = Contest.find(params[:contest][:id]) |
|
275 | 275 | if contest!=nil and contest.enabled |
|
276 | 276 | problems.each do |p| |
|
277 | 277 | p.contests << contest |
|
278 | 278 | end |
|
279 | 279 | end |
|
280 | 280 | end |
|
281 | 281 | |
|
282 | 282 | def set_available(avail) |
|
283 | 283 | problems = get_problems_from_params |
|
284 | 284 | problems.each do |p| |
|
285 | 285 | p.available = avail |
|
286 | 286 | p.save |
|
287 | 287 | end |
|
288 | 288 | end |
|
289 | 289 | |
|
290 | 290 | def get_problems_from_params |
|
291 | 291 | problems = [] |
|
292 | 292 | params.keys.each do |k| |
|
293 | 293 | if k.index('prob-')==0 |
|
294 | 294 | name, id, order = k.split('-') |
|
295 | 295 | problems << Problem.find(id) |
|
296 | 296 | end |
|
297 | 297 | end |
|
298 | 298 | problems |
|
299 | 299 | end |
|
300 | 300 | |
|
301 | 301 | def get_problems_stat |
|
302 | 302 | end |
|
303 | 303 | |
|
304 | 304 | private |
|
305 | 305 | |
|
306 | 306 | def problem_params |
|
307 | - params.require(:problem).permit(:name, :full_name, :full_score, :date_added, :available, :test_allowed,:output_only, :url, :description, tag_ids:[]) | |
|
307 | + params.require(:problem).permit(:name, :full_name, :full_score, :change_date_added, :date_added, :available, :test_allowed,:output_only, :url, :description, tag_ids:[]) | |
|
308 | 308 | end |
|
309 | 309 | |
|
310 | 310 | end |
@@ -1,63 +1,65 | |||
|
1 | 1 | class Problem < ActiveRecord::Base |
|
2 | 2 | |
|
3 | 3 | belongs_to :description |
|
4 | 4 | has_and_belongs_to_many :contests, :uniq => true |
|
5 | 5 | |
|
6 | 6 | #has_and_belongs_to_many :groups |
|
7 | 7 | has_many :groups_problems, class_name: GroupProblem |
|
8 | 8 | has_many :groups, :through => :groups_problems |
|
9 | 9 | |
|
10 | 10 | has_many :problems_tags, class_name: ProblemTag |
|
11 | 11 | has_many :tags, through: :problems_tags |
|
12 | 12 | |
|
13 | 13 | has_many :test_pairs, :dependent => :delete_all |
|
14 | 14 | has_many :testcases, :dependent => :destroy |
|
15 | 15 | |
|
16 | + has_many :submissions | |
|
17 | + | |
|
16 | 18 | validates_presence_of :name |
|
17 | 19 | validates_format_of :name, :with => /\A\w+\z/ |
|
18 | 20 | validates_presence_of :full_name |
|
19 | 21 | |
|
20 | 22 | scope :available, -> { where(available: true) } |
|
21 | 23 | |
|
22 | 24 | DEFAULT_TIME_LIMIT = 1 |
|
23 | 25 | DEFAULT_MEMORY_LIMIT = 32 |
|
24 | 26 | |
|
25 | 27 | def self.available_problems |
|
26 | 28 | available.order(date_added: :desc).order(:name) |
|
27 | 29 | #Problem.available.all(:order => "date_added DESC, name ASC") |
|
28 | 30 | end |
|
29 | 31 | |
|
30 | 32 | def self.create_from_import_form_params(params, old_problem=nil) |
|
31 | 33 | org_problem = old_problem || Problem.new |
|
32 | 34 | import_params, problem = Problem.extract_params_and_check(params, |
|
33 | 35 | org_problem) |
|
34 | 36 | |
|
35 | 37 | if !problem.errors.empty? |
|
36 | 38 | return problem, 'Error importing' |
|
37 | 39 | end |
|
38 | 40 | |
|
39 | 41 | problem.full_score = 100 |
|
40 | 42 | problem.date_added = Time.new |
|
41 | 43 | problem.test_allowed = true |
|
42 | 44 | problem.output_only = false |
|
43 | 45 | problem.available = false |
|
44 | 46 | |
|
45 | 47 | if not problem.save |
|
46 | 48 | return problem, 'Error importing' |
|
47 | 49 | end |
|
48 | 50 | |
|
49 | 51 | import_to_db = params.has_key? :import_to_db |
|
50 | 52 | |
|
51 | 53 | importer = TestdataImporter.new(problem) |
|
52 | 54 | |
|
53 | 55 | if not importer.import_from_file(import_params[:file], |
|
54 | 56 | import_params[:time_limit], |
|
55 | 57 | import_params[:memory_limit], |
|
56 | 58 | import_params[:checker_name], |
|
57 | 59 | import_to_db) |
|
58 | 60 | problem.errors.add(:base,'Import error.') |
|
59 | 61 | end |
|
60 | 62 | |
|
61 | 63 | return problem, importer.log_msg |
|
62 | 64 | end |
|
63 | 65 |
@@ -1,28 +1,30 | |||
|
1 | 1 | - if submission.nil? |
|
2 | 2 | = "-" |
|
3 | 3 | - else |
|
4 | 4 | %strong= "Submission ID:" |
|
5 | 5 | = submission.id |
|
6 | 6 | %br |
|
7 | 7 | - unless submission.graded_at |
|
8 | 8 | %strong= t 'main.submitted_at:' |
|
9 | 9 | = format_full_time_ago(submission.submitted_at.localtime) |
|
10 | 10 | - else |
|
11 | 11 | %strong= t 'main.graded_at:' |
|
12 | 12 | = format_full_time_ago(submission.graded_at.localtime) |
|
13 | 13 | %br |
|
14 | 14 | - if GraderConfiguration['ui.show_score'] |
|
15 | 15 | %strong=t 'main.score' |
|
16 | 16 | = "#{(submission.points*100/submission.problem.full_score).to_i} " |
|
17 | 17 | = " [" |
|
18 | 18 | %tt |
|
19 | 19 | = submission.grader_comment |
|
20 | 20 | = "]" |
|
21 | 21 | %br |
|
22 | 22 | %strong View: |
|
23 | 23 | - if GraderConfiguration.show_grading_result |
|
24 | 24 | = link_to '[detailed result]', :action => 'result', :id => submission.id |
|
25 | - = link_to "#{t 'main.cmp_msg'}", {:action => 'compiler_msg', :id => submission.id}, {popup: true,class: 'btn btn-xs btn-info'} if submission.graded_at | |
|
25 | + - if submission.graded_at | |
|
26 | + %button.btn.btn-info.btn-xs{type: 'button', data: {toggle: 'modal', target: '#compiler'}} | |
|
27 | + =t 'main.cmp_msg' | |
|
26 | 28 | = link_to "#{t 'main.src_link'}", download_submission_path(submission.id), class: 'btn btn-xs btn-info' |
|
27 | 29 | = link_to "#{t 'main.submissions_link'}", problem_submissions_path(problem_id), class: 'btn btn-xs btn-info' |
|
28 | 30 |
@@ -6,96 +6,108 | |||
|
6 | 6 | .row |
|
7 | 7 | .col-md-12 |
|
8 | 8 | .alert.alert-info |
|
9 | 9 | Write your code in the following box, choose language, and click submit button when finished |
|
10 | 10 | .row |
|
11 | 11 | .col-md-8 |
|
12 | 12 | %div#editor{style: 'height: 500px; border-radius: 7px; font-size: 14px;'} |
|
13 | 13 | .col-md-4 |
|
14 | 14 | - # submission form |
|
15 | 15 | = form_tag({controller: :main, :action => 'submit'}, :multipart => true, class: 'form') do |
|
16 | 16 | |
|
17 | 17 | = hidden_field_tag 'editor_text', @source |
|
18 | 18 | = hidden_field_tag 'submission[problem_id]', @problem.id |
|
19 | 19 | .form-group |
|
20 | 20 | = label_tag "Task:" |
|
21 | 21 | = text_field_tag 'asdf', "#{@problem.long_name}", class: 'form-control', disabled: true |
|
22 | 22 | .form-group |
|
23 | 23 | = label_tag "Description:" |
|
24 | 24 | = link_to_description_if_any "[download] <span class='glyphicon glyphicon-file'></span>".html_safe, @problem |
|
25 | 25 | |
|
26 | 26 | .form-group |
|
27 | 27 | = label_tag 'Language:' |
|
28 | 28 | = select_tag 'language_id', options_from_collection_for_select(Language.all, 'id', 'pretty_name', @lang_id || Language.find_by_pretty_name("Python").id || Language.first.id), class: 'form-control select', style: "width: 100px" |
|
29 | 29 | .form-group |
|
30 | 30 | .input-group |
|
31 | 31 | %span.input-group-btn |
|
32 | 32 | %span.btn.btn-default.btn-file |
|
33 | 33 | Browse |
|
34 | 34 | = file_field_tag 'load_file' |
|
35 | 35 | = text_field_tag '' , nil, {readonly: true, class: 'form-control'} |
|
36 | 36 | .form-group |
|
37 | 37 | = submit_tag 'Submit', class: 'btn btn-success', id: 'live_submit', |
|
38 | 38 | data: {confirm: "Submitting this source code for task #{@problem.long_name}?"} |
|
39 | 39 | - # latest submission status |
|
40 | 40 | .panel{class: (@submission && @submission.graded_at) ? "panel-info" : "panel-warning"} |
|
41 | 41 | .panel-heading |
|
42 | 42 | Latest Submission Status |
|
43 | 43 | = link_to "Refresh",get_latest_submission_status_submissions_path(@submission.user,@problem), class: "btn btn-default btn-sm", remote: true if @submission |
|
44 | 44 | .panel-body |
|
45 | 45 | %div#latest_status |
|
46 | 46 | - if @submission |
|
47 | 47 | = render :partial => 'submission_short', |
|
48 | 48 | :locals => {submission: @submission, problem_name: @problem.name, problem_id: @problem.id } |
|
49 | 49 | .row |
|
50 | 50 | .col-md-12 |
|
51 | 51 | %h2 Console |
|
52 | 52 | %textarea#console{style: 'height: 100%; width: 100%;background-color:#000;color:#fff;font-family: consolas, monaco, "Droid Sans Mono";',rows: 20} |
|
53 | 53 | |
|
54 | + .modal.fade#compiler{tabindex: -1,role: 'dialog'} | |
|
55 | + .modal-dialog.modal-lg{role:'document'} | |
|
56 | + .modal-content | |
|
57 | + .modal-header | |
|
58 | + %button.close{type: 'button', data: {dismissed: :modal}, aria: {label: 'close'}} | |
|
59 | + %span{aria: {hidden: 'true'}, data: {dismiss: 'modal'}} × | |
|
60 | + %h4 Compiler message | |
|
61 | + .modal-body | |
|
62 | + %pre#compiler_msg= @submission.compiler_message | |
|
63 | + .modal-footer | |
|
64 | + %button.btn.btn-default{type: 'button', data: {dismiss: 'modal'}} Close | |
|
65 | + | |
|
54 | 66 | :javascript |
|
55 | 67 | $(document).ready(function() { |
|
56 | 68 | e = ace.edit("editor") |
|
57 | 69 | e.setValue($("#text_sourcecode").val()); |
|
58 | 70 | e.gotoLine(1); |
|
59 | 71 | $("#language_id").trigger('change'); |
|
60 | 72 | |
|
61 | 73 | $("#load_file").on('change',function(evt) { |
|
62 | 74 | var file = evt.target.files[0]; |
|
63 | 75 | var reader = new FileReader(); |
|
64 | 76 | reader.onload = function(theFile) { |
|
65 | 77 | var e = ace.edit("editor") |
|
66 | 78 | e.setValue(theFile.target.result); |
|
67 | 79 | e.gotoLine(1); |
|
68 | 80 | }; |
|
69 | 81 | reader.readAsText(file) |
|
70 | 82 | }); |
|
71 | 83 | |
|
72 | 84 | //brython(); |
|
73 | 85 | }); |
|
74 | 86 | |
|
75 | 87 | |
|
76 | 88 | |
|
77 | 89 | |
|
78 | 90 | |
|
79 | 91 | %script#__main__{type:'text/python3'} |
|
80 | 92 | :plain |
|
81 | 93 | import sys |
|
82 | 94 | import traceback |
|
83 | 95 | |
|
84 | 96 | from browser import document as doc |
|
85 | 97 | from browser import window, alert, console |
|
86 | 98 | |
|
87 | 99 | _credits = """ Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands |
|
88 | 100 | for supporting Python development. See www.python.org for more information.""" |
|
89 | 101 | |
|
90 | 102 | _copyright = """Copyright (c) 2012, Pierre Quentel pierre.quentel@gmail.com |
|
91 | 103 | All Rights Reserved. |
|
92 | 104 | |
|
93 | 105 | Copyright (c) 2001-2013 Python Software Foundation. |
|
94 | 106 | All Rights Reserved. |
|
95 | 107 | |
|
96 | 108 | Copyright (c) 2000 BeOpen.com. |
|
97 | 109 | All Rights Reserved. |
|
98 | 110 | |
|
99 | 111 | Copyright (c) 1995-2001 Corporation for National Research Initiatives. |
|
100 | 112 | All Rights Reserved. |
|
101 | 113 |
@@ -1,35 +1,36 | |||
|
1 | 1 | = user_title_bar(@user) |
|
2 | 2 | |
|
3 | 3 | %h1 Your account settings |
|
4 | 4 | |
|
5 | 5 | -#%p |
|
6 | 6 | -#You can edit your alias and e-mails. Just click on the text and edit it. |
|
7 | 7 | |
|
8 | - %table.uinfo | |
|
8 | + %table.table.table-bordered{:style => "width:30%"} | |
|
9 | 9 | %tr |
|
10 |
- %th |
|
|
11 |
- %td |
|
|
10 | + %th Login | |
|
11 | + %td= @user.login | |
|
12 | 12 | %tr |
|
13 |
- %th |
|
|
14 |
- %td |
|
|
13 | + %th Full name | |
|
14 | + %td= @user.full_name | |
|
15 | 15 | -#%tr |
|
16 | 16 | -#%th.uinfo Alias |
|
17 | 17 | -#%td.uinfo= in_place_editor_field :user, 'alias_for_editing', {}, :rows => 1 |
|
18 | 18 | -#%tr |
|
19 | 19 | -#%th.uinfo E-mail |
|
20 | 20 | -#%td.uinfo= in_place_editor_field :user, 'email_for_editing', {}, :rows => 1 |
|
21 | 21 | %tr |
|
22 |
- %th |
|
|
23 |
- %td |
|
|
22 | + %th Password | |
|
23 | + %td | |
|
24 | 24 | = form_tag :action => 'chg_passwd', :method => 'post' do |
|
25 | 25 | %table |
|
26 | 26 | %tr |
|
27 | - %td= password_field_tag 'passwd' | |
|
27 | + %td | |
|
28 | + %input{:type => "password", :class => "form-control", :name => "passwd", :id => "passwd"} | |
|
28 | 29 | %td (new) |
|
29 | 30 | %tr |
|
30 | - %td= password_field_tag 'passwd_verify' | |
|
31 | + %td | |
|
32 | + %input{:type => "password", :class => "form-control", :name => "passwd_verify", :id => "passwd_verify"} | |
|
31 | 33 | %td (verify) |
|
32 | 34 | %tr |
|
33 | 35 | %td{:colspan => "2"} |
|
34 | - = submit_tag 'change password' | |
|
35 | - | |
|
36 | + %input{:type => "button", :class => "btn btn-default", :name => "commit", :value => "Change Password"} |
@@ -1,321 +1,321 | |||
|
1 | 1 | # encoding: UTF-8 |
|
2 | 2 | # This file is auto-generated from the current state of the database. Instead |
|
3 | 3 | # of editing this file, please use the migrations feature of Active Record to |
|
4 | 4 | # incrementally modify your database, and then regenerate this schema definition. |
|
5 | 5 | # |
|
6 | 6 | # Note that this schema.rb definition is the authoritative source for your |
|
7 | 7 | # database schema. If you need to create the application database on another |
|
8 | 8 | # system, you should be using db:schema:load, not running all the migrations |
|
9 | 9 | # from scratch. The latter is a flawed and unsustainable approach (the more migrations |
|
10 | 10 | # you'll amass, the slower it'll run and the greater likelihood for issues). |
|
11 | 11 | # |
|
12 | 12 | # It's strongly recommended that you check this file into your version control system. |
|
13 | 13 | |
|
14 | 14 | ActiveRecord::Schema.define(version: 20180612102327) do |
|
15 | 15 | |
|
16 | 16 | create_table "announcements", force: :cascade do |t| |
|
17 | 17 | t.string "author", limit: 255 |
|
18 | 18 | t.text "body", limit: 65535 |
|
19 | 19 | t.boolean "published" |
|
20 | - t.datetime "created_at", null: false | |
|
21 | - t.datetime "updated_at", null: false | |
|
20 | + t.datetime "created_at" | |
|
21 | + t.datetime "updated_at" | |
|
22 | 22 | t.boolean "frontpage", default: false |
|
23 | 23 | t.boolean "contest_only", default: false |
|
24 | 24 | t.string "title", limit: 255 |
|
25 | 25 | t.string "notes", limit: 255 |
|
26 | 26 | end |
|
27 | 27 | |
|
28 | 28 | create_table "contests", force: :cascade do |t| |
|
29 | 29 | t.string "title", limit: 255 |
|
30 | 30 | t.boolean "enabled" |
|
31 |
- t.datetime "created_at" |
|
|
32 |
- t.datetime "updated_at" |
|
|
31 | + t.datetime "created_at" | |
|
32 | + t.datetime "updated_at" | |
|
33 | 33 | t.string "name", limit: 255 |
|
34 | 34 | end |
|
35 | 35 | |
|
36 | 36 | create_table "contests_problems", id: false, force: :cascade do |t| |
|
37 | 37 | t.integer "contest_id", limit: 4 |
|
38 | 38 | t.integer "problem_id", limit: 4 |
|
39 | 39 | end |
|
40 | 40 | |
|
41 | 41 | create_table "contests_users", id: false, force: :cascade do |t| |
|
42 | 42 | t.integer "contest_id", limit: 4 |
|
43 | 43 | t.integer "user_id", limit: 4 |
|
44 | 44 | end |
|
45 | 45 | |
|
46 | 46 | create_table "countries", force: :cascade do |t| |
|
47 | 47 | t.string "name", limit: 255 |
|
48 |
- t.datetime "created_at" |
|
|
49 |
- t.datetime "updated_at" |
|
|
48 | + t.datetime "created_at" | |
|
49 | + t.datetime "updated_at" | |
|
50 | 50 | end |
|
51 | 51 | |
|
52 | 52 | create_table "descriptions", force: :cascade do |t| |
|
53 | 53 | t.text "body", limit: 65535 |
|
54 | 54 | t.boolean "markdowned" |
|
55 |
- t.datetime "created_at" |
|
|
56 |
- t.datetime "updated_at" |
|
|
55 | + t.datetime "created_at" | |
|
56 | + t.datetime "updated_at" | |
|
57 | 57 | end |
|
58 | 58 | |
|
59 | 59 | create_table "grader_configurations", force: :cascade do |t| |
|
60 | 60 | t.string "key", limit: 255 |
|
61 | 61 | t.string "value_type", limit: 255 |
|
62 | 62 | t.string "value", limit: 255 |
|
63 |
- t.datetime "created_at" |
|
|
64 |
- t.datetime "updated_at" |
|
|
63 | + t.datetime "created_at" | |
|
64 | + t.datetime "updated_at" | |
|
65 | 65 | t.text "description", limit: 65535 |
|
66 | 66 | end |
|
67 | 67 | |
|
68 | 68 | create_table "grader_processes", force: :cascade do |t| |
|
69 | 69 | t.string "host", limit: 255 |
|
70 | 70 | t.integer "pid", limit: 4 |
|
71 | 71 | t.string "mode", limit: 255 |
|
72 | 72 | t.boolean "active" |
|
73 |
- t.datetime "created_at" |
|
|
74 |
- t.datetime "updated_at" |
|
|
73 | + t.datetime "created_at" | |
|
74 | + t.datetime "updated_at" | |
|
75 | 75 | t.integer "task_id", limit: 4 |
|
76 | 76 | t.string "task_type", limit: 255 |
|
77 | 77 | t.boolean "terminated" |
|
78 | 78 | end |
|
79 | 79 | |
|
80 |
- add_index "grader_processes", ["host", "pid"], name: "index_grader_processes_on_ |
|
|
80 | + add_index "grader_processes", ["host", "pid"], name: "index_grader_processes_on_host_and_pid", using: :btree | |
|
81 | 81 | |
|
82 | 82 | create_table "groups", force: :cascade do |t| |
|
83 | 83 | t.string "name", limit: 255 |
|
84 | 84 | t.string "description", limit: 255 |
|
85 | 85 | end |
|
86 | 86 | |
|
87 | 87 | create_table "groups_problems", id: false, force: :cascade do |t| |
|
88 | 88 | t.integer "problem_id", limit: 4, null: false |
|
89 | 89 | t.integer "group_id", limit: 4, null: false |
|
90 | 90 | end |
|
91 | 91 | |
|
92 | 92 | add_index "groups_problems", ["group_id", "problem_id"], name: "index_groups_problems_on_group_id_and_problem_id", using: :btree |
|
93 | 93 | |
|
94 | 94 | create_table "groups_users", id: false, force: :cascade do |t| |
|
95 | 95 | t.integer "group_id", limit: 4, null: false |
|
96 | 96 | t.integer "user_id", limit: 4, null: false |
|
97 | 97 | end |
|
98 | 98 | |
|
99 | 99 | add_index "groups_users", ["user_id", "group_id"], name: "index_groups_users_on_user_id_and_group_id", using: :btree |
|
100 | 100 | |
|
101 | 101 | create_table "heart_beats", force: :cascade do |t| |
|
102 | 102 | t.integer "user_id", limit: 4 |
|
103 | 103 | t.string "ip_address", limit: 255 |
|
104 |
- t.datetime "created_at" |
|
|
105 |
- t.datetime "updated_at" |
|
|
104 | + t.datetime "created_at" | |
|
105 | + t.datetime "updated_at" | |
|
106 | 106 | t.string "status", limit: 255 |
|
107 | 107 | end |
|
108 | 108 | |
|
109 | 109 | add_index "heart_beats", ["updated_at"], name: "index_heart_beats_on_updated_at", using: :btree |
|
110 | 110 | |
|
111 | 111 | create_table "languages", force: :cascade do |t| |
|
112 | 112 | t.string "name", limit: 10 |
|
113 | 113 | t.string "pretty_name", limit: 255 |
|
114 | 114 | t.string "ext", limit: 10 |
|
115 | 115 | t.string "common_ext", limit: 255 |
|
116 | 116 | end |
|
117 | 117 | |
|
118 | 118 | create_table "logins", force: :cascade do |t| |
|
119 | 119 | t.integer "user_id", limit: 4 |
|
120 | 120 | t.string "ip_address", limit: 255 |
|
121 |
- t.datetime "created_at" |
|
|
122 |
- t.datetime "updated_at" |
|
|
121 | + t.datetime "created_at" | |
|
122 | + t.datetime "updated_at" | |
|
123 | 123 | end |
|
124 | 124 | |
|
125 | 125 | create_table "messages", force: :cascade do |t| |
|
126 | 126 | t.integer "sender_id", limit: 4 |
|
127 | 127 | t.integer "receiver_id", limit: 4 |
|
128 | 128 | t.integer "replying_message_id", limit: 4 |
|
129 | 129 | t.text "body", limit: 65535 |
|
130 | 130 | t.boolean "replied" |
|
131 |
- t.datetime "created_at" |
|
|
132 |
- t.datetime "updated_at" |
|
|
131 | + t.datetime "created_at" | |
|
132 | + t.datetime "updated_at" | |
|
133 | 133 | end |
|
134 | 134 | |
|
135 | 135 | create_table "problems", force: :cascade do |t| |
|
136 | 136 | t.string "name", limit: 30 |
|
137 | 137 | t.string "full_name", limit: 255 |
|
138 | 138 | t.integer "full_score", limit: 4 |
|
139 | 139 | t.date "date_added" |
|
140 | 140 | t.boolean "available" |
|
141 | 141 | t.string "url", limit: 255 |
|
142 | 142 | t.integer "description_id", limit: 4 |
|
143 | 143 | t.boolean "test_allowed" |
|
144 | 144 | t.boolean "output_only" |
|
145 | 145 | t.string "description_filename", limit: 255 |
|
146 | 146 | t.boolean "view_testcase" |
|
147 | 147 | end |
|
148 | 148 | |
|
149 | 149 | create_table "problems_tags", force: :cascade do |t| |
|
150 | 150 | t.integer "problem_id", limit: 4 |
|
151 | 151 | t.integer "tag_id", limit: 4 |
|
152 | 152 | end |
|
153 | 153 | |
|
154 | 154 | add_index "problems_tags", ["problem_id", "tag_id"], name: "index_problems_tags_on_problem_id_and_tag_id", unique: true, using: :btree |
|
155 | 155 | add_index "problems_tags", ["problem_id"], name: "index_problems_tags_on_problem_id", using: :btree |
|
156 | 156 | add_index "problems_tags", ["tag_id"], name: "index_problems_tags_on_tag_id", using: :btree |
|
157 | 157 | |
|
158 | 158 | create_table "rights", force: :cascade do |t| |
|
159 | 159 | t.string "name", limit: 255 |
|
160 | 160 | t.string "controller", limit: 255 |
|
161 | 161 | t.string "action", limit: 255 |
|
162 | 162 | end |
|
163 | 163 | |
|
164 | 164 | create_table "rights_roles", id: false, force: :cascade do |t| |
|
165 | 165 | t.integer "right_id", limit: 4 |
|
166 | 166 | t.integer "role_id", limit: 4 |
|
167 | 167 | end |
|
168 | 168 | |
|
169 | 169 | add_index "rights_roles", ["role_id"], name: "index_rights_roles_on_role_id", using: :btree |
|
170 | 170 | |
|
171 | 171 | create_table "roles", force: :cascade do |t| |
|
172 | 172 | t.string "name", limit: 255 |
|
173 | 173 | end |
|
174 | 174 | |
|
175 | 175 | create_table "roles_users", id: false, force: :cascade do |t| |
|
176 | 176 | t.integer "role_id", limit: 4 |
|
177 | 177 | t.integer "user_id", limit: 4 |
|
178 | 178 | end |
|
179 | 179 | |
|
180 | 180 | add_index "roles_users", ["user_id"], name: "index_roles_users_on_user_id", using: :btree |
|
181 | 181 | |
|
182 | 182 | create_table "sessions", force: :cascade do |t| |
|
183 | 183 | t.string "session_id", limit: 255 |
|
184 | 184 | t.text "data", limit: 65535 |
|
185 | 185 | t.datetime "updated_at" |
|
186 | 186 | end |
|
187 | 187 | |
|
188 | 188 | add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree |
|
189 | 189 | add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree |
|
190 | 190 | |
|
191 | 191 | create_table "sites", force: :cascade do |t| |
|
192 | 192 | t.string "name", limit: 255 |
|
193 | 193 | t.boolean "started" |
|
194 | 194 | t.datetime "start_time" |
|
195 |
- t.datetime "created_at" |
|
|
196 |
- t.datetime "updated_at" |
|
|
195 | + t.datetime "created_at" | |
|
196 | + t.datetime "updated_at" | |
|
197 | 197 | t.integer "country_id", limit: 4 |
|
198 | 198 | t.string "password", limit: 255 |
|
199 | 199 | end |
|
200 | 200 | |
|
201 | 201 | create_table "submission_view_logs", force: :cascade do |t| |
|
202 | 202 | t.integer "user_id", limit: 4 |
|
203 | 203 | t.integer "submission_id", limit: 4 |
|
204 |
- t.datetime "created_at" |
|
|
205 |
- t.datetime "updated_at" |
|
|
204 | + t.datetime "created_at" | |
|
205 | + t.datetime "updated_at" | |
|
206 | 206 | end |
|
207 | 207 | |
|
208 | 208 | create_table "submissions", force: :cascade do |t| |
|
209 | 209 | t.integer "user_id", limit: 4 |
|
210 | 210 | t.integer "problem_id", limit: 4 |
|
211 | 211 | t.integer "language_id", limit: 4 |
|
212 | 212 | t.text "source", limit: 16777215 |
|
213 | 213 | t.binary "binary", limit: 65535 |
|
214 | 214 | t.datetime "submitted_at" |
|
215 | 215 | t.datetime "compiled_at" |
|
216 | 216 | t.text "compiler_message", limit: 65535 |
|
217 | 217 | t.datetime "graded_at" |
|
218 | 218 | t.integer "points", limit: 4 |
|
219 | 219 | t.text "grader_comment", limit: 65535 |
|
220 | 220 | t.integer "number", limit: 4 |
|
221 | 221 | t.string "source_filename", limit: 255 |
|
222 | 222 | t.float "max_runtime", limit: 24 |
|
223 | 223 | t.integer "peak_memory", limit: 4 |
|
224 | 224 | t.integer "effective_code_length", limit: 4 |
|
225 | 225 | t.string "ip_address", limit: 255 |
|
226 | 226 | end |
|
227 | 227 | |
|
228 | 228 | add_index "submissions", ["user_id", "problem_id", "number"], name: "index_submissions_on_user_id_and_problem_id_and_number", unique: true, using: :btree |
|
229 | 229 | add_index "submissions", ["user_id", "problem_id"], name: "index_submissions_on_user_id_and_problem_id", using: :btree |
|
230 | 230 | |
|
231 | 231 | create_table "tags", force: :cascade do |t| |
|
232 | 232 | t.string "name", limit: 255, null: false |
|
233 | 233 | t.text "description", limit: 65535 |
|
234 | 234 | t.boolean "public" |
|
235 | 235 | t.datetime "created_at", null: false |
|
236 | 236 | t.datetime "updated_at", null: false |
|
237 | 237 | end |
|
238 | 238 | |
|
239 | 239 | create_table "tasks", force: :cascade do |t| |
|
240 | 240 | t.integer "submission_id", limit: 4 |
|
241 | 241 | t.datetime "created_at" |
|
242 | 242 | t.integer "status", limit: 4 |
|
243 | 243 | t.datetime "updated_at" |
|
244 | 244 | end |
|
245 | 245 | |
|
246 | 246 | add_index "tasks", ["submission_id"], name: "index_tasks_on_submission_id", using: :btree |
|
247 | 247 | |
|
248 | 248 | create_table "test_pairs", force: :cascade do |t| |
|
249 | 249 | t.integer "problem_id", limit: 4 |
|
250 | 250 | t.text "input", limit: 16777215 |
|
251 | 251 | t.text "solution", limit: 16777215 |
|
252 |
- t.datetime "created_at" |
|
|
253 |
- t.datetime "updated_at" |
|
|
252 | + t.datetime "created_at" | |
|
253 | + t.datetime "updated_at" | |
|
254 | 254 | end |
|
255 | 255 | |
|
256 | 256 | create_table "test_requests", force: :cascade do |t| |
|
257 | 257 | t.integer "user_id", limit: 4 |
|
258 | 258 | t.integer "problem_id", limit: 4 |
|
259 | 259 | t.integer "submission_id", limit: 4 |
|
260 | 260 | t.string "input_file_name", limit: 255 |
|
261 | 261 | t.string "output_file_name", limit: 255 |
|
262 | 262 | t.string "running_stat", limit: 255 |
|
263 | 263 | t.integer "status", limit: 4 |
|
264 |
- t.datetime "updated_at" |
|
|
264 | + t.datetime "updated_at" | |
|
265 | 265 | t.datetime "submitted_at" |
|
266 | 266 | t.datetime "compiled_at" |
|
267 | 267 | t.text "compiler_message", limit: 65535 |
|
268 | 268 | t.datetime "graded_at" |
|
269 | 269 | t.string "grader_comment", limit: 255 |
|
270 |
- t.datetime "created_at" |
|
|
270 | + t.datetime "created_at" | |
|
271 | 271 | t.float "running_time", limit: 24 |
|
272 | 272 | t.string "exit_status", limit: 255 |
|
273 | 273 | t.integer "memory_usage", limit: 4 |
|
274 | 274 | end |
|
275 | 275 | |
|
276 | 276 | add_index "test_requests", ["user_id", "problem_id"], name: "index_test_requests_on_user_id_and_problem_id", using: :btree |
|
277 | 277 | |
|
278 | 278 | create_table "testcases", force: :cascade do |t| |
|
279 | 279 | t.integer "problem_id", limit: 4 |
|
280 | 280 | t.integer "num", limit: 4 |
|
281 | 281 | t.integer "group", limit: 4 |
|
282 | 282 | t.integer "score", limit: 4 |
|
283 | 283 | t.text "input", limit: 4294967295 |
|
284 | 284 | t.text "sol", limit: 4294967295 |
|
285 | 285 | t.datetime "created_at" |
|
286 | 286 | t.datetime "updated_at" |
|
287 | 287 | end |
|
288 | 288 | |
|
289 | 289 | add_index "testcases", ["problem_id"], name: "index_testcases_on_problem_id", using: :btree |
|
290 | 290 | |
|
291 | 291 | create_table "user_contest_stats", force: :cascade do |t| |
|
292 | 292 | t.integer "user_id", limit: 4 |
|
293 | 293 | t.datetime "started_at" |
|
294 |
- t.datetime "created_at" |
|
|
295 |
- t.datetime "updated_at" |
|
|
294 | + t.datetime "created_at" | |
|
295 | + t.datetime "updated_at" | |
|
296 | 296 | t.boolean "forced_logout" |
|
297 | 297 | end |
|
298 | 298 | |
|
299 | 299 | create_table "users", force: :cascade do |t| |
|
300 | 300 | t.string "login", limit: 50 |
|
301 | 301 | t.string "full_name", limit: 255 |
|
302 | 302 | t.string "hashed_password", limit: 255 |
|
303 | 303 | t.string "salt", limit: 5 |
|
304 | 304 | t.string "alias", limit: 255 |
|
305 | 305 | t.string "email", limit: 255 |
|
306 | 306 | t.integer "site_id", limit: 4 |
|
307 | 307 | t.integer "country_id", limit: 4 |
|
308 | 308 | t.boolean "activated", default: false |
|
309 | 309 | t.datetime "created_at" |
|
310 | 310 | t.datetime "updated_at" |
|
311 | + t.string "section", limit: 255 | |
|
311 | 312 | t.boolean "enabled", default: true |
|
312 | 313 | t.string "remark", limit: 255 |
|
313 | 314 | t.string "last_ip", limit: 255 |
|
314 | - t.string "section", limit: 255 | |
|
315 | 315 | end |
|
316 | 316 | |
|
317 | 317 | add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree |
|
318 | 318 | |
|
319 | 319 | add_foreign_key "problems_tags", "problems" |
|
320 | 320 | add_foreign_key "problems_tags", "tags" |
|
321 | 321 | end |
deleted file |
You need to be logged in to leave comments.
Login now