Description:
add config for heartbeat response update heartbeat view
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r538:4c7c815d4901 - - 4 files changed: 20 inserted, 5 deleted

@@ -0,0 +1,10
1 + class UpdateHeartBeat < ActiveRecord::Migration
2 + def up
3 + GraderConfiguration.create key: 'right.heartbeat_response', value_type: 'string', value:'OK', description:'Heart beat response text'
4 + add_index :heart_beats, :updated_at
5 + end
6 +
7 + def down
8 + remove_index :heart_beats, :updated_at
9 + end
10 + end
@@ -1,30 +1,31
1 1 class HeartbeatController < ApplicationController
2 2 before_filter :admin_authorization, :only => ['index']
3 3
4 4 def edit
5 5 @user = User.find_by_login(params[:id])
6 6 unless @user
7 7 render text: "LOGIN_NOT_FOUND"
8 8 return
9 9 end
10 10
11 11 #hb = HeartBeat.where(user_id: @user.id, ip_address: request.remote_ip).first
12 12 #puts "status = #{params[:status]}"
13 13 #if hb
14 14 # if params[:status]
15 15 # hb.status = params[:status]
16 16 # hb.save
17 17 # end
18 18 # hb.touch
19 19 #else
20 20 # HeartBeat.creae(user_id: @user.id, ip_address: request.remote_ip)
21 21 #end
22 22 HeartBeat.create(user_id: @user.id, ip_address: request.remote_ip, status: params[:status])
23 - render text: "OK"
23 +
24 + render text: (GraderConfiguration['right.heartbeat_response'] || 'OK')
24 25 end
25 26
26 27 def index
27 - @hb = HeartBeat.includes(:user).order(:user_id).all
28 + @hb = HeartBeat.where("updated_at >= ?",Time.zone.now-2.hours).includes(:user).order(:user_id).all
28 29 @num = HeartBeat.where("updated_at >= ?",Time.zone.now-5.minutes).count
29 30 end
30 31 end
@@ -1,30 +1,32
1 1 - content_for :header do
2 2 = javascript_include_tag 'local_jquery'
3 3 = stylesheet_link_tag 'tablesorter-theme.cafe'
4 4
5 5 %script{:type=>"text/javascript"}
6 6 $(function () {
7 7 $('#since_datetime').datetimepicker({ showButtonPanel: true, dateFormat: "yy-mm-dd", controlType: "slider"} );
8 8 $('#until_datetime').datetimepicker({ showButtonPanel: true, dateFormat: "yy-mm-dd", controlType: "slider"} );
9 9 $('#my_table').tablesorter({widgets: ['zebra']});
10 10 });
11 11
12 12 %h1 Heart Beat Count
13 13 = "Last 5 minutes distinct user count = #{@num}"
14 14
15 - %h1 Heart Beat List
15 + %h1 Heart Beat from preview 2 hours
16 16
17 17 %table.tablesorter-cafe#my_table
18 18 %thead
19 19 %tr
20 20 %th Login
21 21 %th Full name
22 22 %th IP
23 - %th Last Update
23 + %th Status
24 + %th Update
24 25 %tbody
25 26 - @hb.each do |hb|
26 27 %tr{class: cycle('info-even','info-odd')}
27 28 %td= link_to hb.user.login, controller: :users, :action => 'profile', :id => hb.user.id
28 29 %td= hb.user.full_name
29 30 %td= hb.ip_address
31 + %td= hb.status
30 32 %td= "#{time_ago_in_words(hb.updated_at)} ago"
@@ -1,38 +1,38
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 to check this file into your version control system.
13 13
14 - ActiveRecord::Schema.define(:version => 20150914223258) do
14 + ActiveRecord::Schema.define(:version => 20150916054105) do
15 15
16 16 create_table "announcements", :force => true do |t|
17 17 t.string "author"
18 18 t.text "body"
19 19 t.boolean "published"
20 20 t.datetime "created_at", :null => false
21 21 t.datetime "updated_at", :null => false
22 22 t.boolean "frontpage", :default => false
23 23 t.boolean "contest_only", :default => false
24 24 t.string "title"
25 25 t.string "notes"
26 26 end
27 27
28 28 create_table "contests", :force => true do |t|
29 29 t.string "title"
30 30 t.boolean "enabled"
31 31 t.datetime "created_at", :null => false
32 32 t.datetime "updated_at", :null => false
33 33 t.string "name"
34 34 end
35 35
36 36 create_table "contests_problems", :id => false, :force => true do |t|
37 37 t.integer "contest_id"
38 38 t.integer "problem_id"
@@ -66,48 +66,50
66 66 end
67 67
68 68 create_table "grader_processes", :force => true do |t|
69 69 t.string "host", :limit => 20
70 70 t.integer "pid"
71 71 t.string "mode"
72 72 t.boolean "active"
73 73 t.datetime "created_at", :null => false
74 74 t.datetime "updated_at", :null => false
75 75 t.integer "task_id"
76 76 t.string "task_type"
77 77 t.boolean "terminated"
78 78 end
79 79
80 80 add_index "grader_processes", ["host", "pid"], :name => "index_grader_processes_on_ip_and_pid"
81 81
82 82 create_table "heart_beats", :force => true do |t|
83 83 t.integer "user_id"
84 84 t.string "ip_address"
85 85 t.datetime "created_at", :null => false
86 86 t.datetime "updated_at", :null => false
87 87 t.string "status"
88 88 end
89 89
90 + add_index "heart_beats", ["updated_at"], :name => "index_heart_beats_on_updated_at"
91 +
90 92 create_table "languages", :force => true do |t|
91 93 t.string "name", :limit => 10
92 94 t.string "pretty_name"
93 95 t.string "ext", :limit => 10
94 96 t.string "common_ext"
95 97 end
96 98
97 99 create_table "logins", :force => true do |t|
98 100 t.integer "user_id"
99 101 t.string "ip_address"
100 102 t.datetime "created_at", :null => false
101 103 t.datetime "updated_at", :null => false
102 104 end
103 105
104 106 create_table "messages", :force => true do |t|
105 107 t.integer "sender_id"
106 108 t.integer "receiver_id"
107 109 t.integer "replying_message_id"
108 110 t.text "body"
109 111 t.boolean "replied"
110 112 t.datetime "created_at", :null => false
111 113 t.datetime "updated_at", :null => false
112 114 end
113 115
You need to be logged in to leave comments. Login now