issue 11269 性能问题,从12秒到6秒多,还有优化空间
This commit is contained in:
parent
fdf00eb9cf
commit
6d1503f3bd
|
@ -1,5 +1,5 @@
|
||||||
<% user_ids = student_work.student_work_projects.empty? ? "(-1)" : "(" + student_work.student_work_projects.map{|st| st.user_id}.join(",") + ")" %>
|
<% user_ids = student_work.student_work_projects.map(&:user_id) %>
|
||||||
<% student_work_groups = @homework.student_works.where("user_id in #{user_ids}").order("created_at asc") %>
|
<% student_work_groups = @homework.student_works.where(user_id: user_ids).includes(:user).order("created_at asc") %>
|
||||||
<% anon_count = student_work.student_works_scores.where("reviewer_role = 3 and appeal_status != 3").group_by(&:user_id).count %>
|
<% anon_count = student_work.student_works_scores.where("reviewer_role = 3 and appeal_status != 3").group_by(&:user_id).count %>
|
||||||
<% student_work_groups.each_with_index do |st, j| %>
|
<% student_work_groups.each_with_index do |st, j| %>
|
||||||
<% score_open = @is_teacher || @homework.score_open == 1 || st.user == User.current %>
|
<% score_open = @is_teacher || @homework.score_open == 1 || st.user == User.current %>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
if Rails.env.development?
|
if Rails.env.development?
|
||||||
Rack::MiniProfiler.config.position = 'right'
|
Rack::MiniProfiler.config.position = 'right'
|
||||||
Rack::MiniProfiler.config.start_hidden = true
|
Rack::MiniProfiler.config.start_hidden = false
|
||||||
end
|
end
|
47
db/schema.rb
47
db/schema.rb
|
@ -11,7 +11,8 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20161223083022) do
|
ActiveRecord::Schema.define(:version => 20170117161330) do
|
||||||
|
|
||||||
create_table "activities", :force => true do |t|
|
create_table "activities", :force => true do |t|
|
||||||
t.integer "act_id", :null => false
|
t.integer "act_id", :null => false
|
||||||
t.string "act_type", :null => false
|
t.string "act_type", :null => false
|
||||||
|
@ -337,14 +338,16 @@ ActiveRecord::Schema.define(:version => 20161223083022) do
|
||||||
add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids"
|
add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids"
|
||||||
|
|
||||||
create_table "changesets", :force => true do |t|
|
create_table "changesets", :force => true do |t|
|
||||||
t.integer "repository_id", :null => false
|
t.integer "repository_id", :null => false
|
||||||
t.string "revision", :null => false
|
t.string "revision", :null => false
|
||||||
t.string "committer"
|
t.string "committer"
|
||||||
t.datetime "committed_on", :null => false
|
t.datetime "committed_on", :null => false
|
||||||
t.text "comments"
|
t.text "comments"
|
||||||
t.date "commit_date"
|
t.date "commit_date"
|
||||||
t.string "scmid"
|
t.string "scmid"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
t.integer "project_id"
|
||||||
|
t.integer "type", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
|
add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
|
||||||
|
@ -614,20 +617,6 @@ ActiveRecord::Schema.define(:version => 20161223083022) do
|
||||||
t.integer "container_id", :default => 0
|
t.integer "container_id", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "course_class_post", :id => false, :force => true do |t|
|
|
||||||
t.integer "班级id", :default => 0, :null => false
|
|
||||||
t.string "班级名"
|
|
||||||
t.integer "帖子id", :default => 0, :null => false
|
|
||||||
t.integer "主贴id"
|
|
||||||
t.string "帖子标题", :default => "", :null => false
|
|
||||||
t.text "帖子内容"
|
|
||||||
t.integer "帖子用户id"
|
|
||||||
t.integer "帖子回复数", :default => 0, :null => false
|
|
||||||
t.integer "最后回帖id"
|
|
||||||
t.datetime "发帖时间", :null => false
|
|
||||||
t.datetime "帖子更新时间", :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "course_contributor_scores", :force => true do |t|
|
create_table "course_contributor_scores", :force => true do |t|
|
||||||
t.integer "course_id"
|
t.integer "course_id"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
@ -927,13 +916,11 @@ ActiveRecord::Schema.define(:version => 20161223083022) do
|
||||||
t.integer "exercise_status"
|
t.integer "exercise_status"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "time"
|
t.integer "time"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at", :null => false
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
t.datetime "publish_time"
|
t.datetime "publish_time"
|
||||||
t.datetime "end_time"
|
t.datetime "end_time"
|
||||||
t.integer "show_result"
|
t.integer "show_result"
|
||||||
t.integer "question_random", :default => 0
|
|
||||||
t.integer "choice_random", :default => 0
|
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "first_pages", :force => true do |t|
|
create_table "first_pages", :force => true do |t|
|
||||||
|
@ -1122,6 +1109,10 @@ ActiveRecord::Schema.define(:version => 20161223083022) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "innodb_monitor", :id => false, :force => true do |t|
|
||||||
|
t.integer "a"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "invite_lists", :force => true do |t|
|
create_table "invite_lists", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
@ -2257,6 +2248,8 @@ ActiveRecord::Schema.define(:version => 20161223083022) do
|
||||||
t.string "description", :default => ""
|
t.string "description", :default => ""
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_index "user_extensions", ["user_id"], :name => "index_user_extensions_on_user_id"
|
||||||
|
|
||||||
create_table "user_feedback_messages", :force => true do |t|
|
create_table "user_feedback_messages", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "journals_for_message_id"
|
t.integer "journals_for_message_id"
|
||||||
|
@ -2433,6 +2426,16 @@ ActiveRecord::Schema.define(:version => 20161223083022) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "wechat_logs", :force => true do |t|
|
||||||
|
t.string "openid", :null => false
|
||||||
|
t.text "request_raw"
|
||||||
|
t.text "response_raw"
|
||||||
|
t.text "session_raw"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "wechat_logs", ["openid"], :name => "index_wechat_logs_on_openid"
|
||||||
|
|
||||||
create_table "wiki_content_versions", :force => true do |t|
|
create_table "wiki_content_versions", :force => true do |t|
|
||||||
t.integer "wiki_content_id", :null => false
|
t.integer "wiki_content_id", :null => false
|
||||||
t.integer "page_id", :null => false
|
t.integer "page_id", :null => false
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
Rake::TaskManager.class_eval do
|
||||||
|
def delete_task(task_name)
|
||||||
|
@tasks.delete(task_name.to_s)
|
||||||
|
end
|
||||||
|
Rake.application.delete_task("db:test:purge")
|
||||||
|
Rake.application.delete_task("db:test:prepare")
|
||||||
|
end
|
||||||
|
|
||||||
|
namespace :db do
|
||||||
|
namespace :test do
|
||||||
|
task :purge do
|
||||||
|
end
|
||||||
|
task :prepare do
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -30,7 +30,6 @@ RSpec.configure do |config|
|
||||||
config.use_transactional_fixtures = true
|
config.use_transactional_fixtures = true
|
||||||
|
|
||||||
config.before(:suite) do
|
config.before(:suite) do
|
||||||
require_relative "seeds"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# RSpec Rails can automatically mix in different behaviours to your tests
|
# RSpec Rails can automatically mix in different behaviours to your tests
|
||||||
|
|
|
@ -1,38 +1,16 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
require 'shared_account_spec'
|
|
||||||
|
|
||||||
# "attachments"=>{"1"=>{"filename"=>"11.gif", "description"=>"", "is_public_checkbox"=>"1", "token"=>"33731.8a74e086d7716f89bc4fbac0606589c7"}}
|
# "attachments"=>{"1"=>{"filename"=>"11.gif", "description"=>"", "is_public_checkbox"=>"1", "token"=>"33731.8a74e086d7716f89bc4fbac0606589c7"}}
|
||||||
RSpec.describe "作业打包下载", :type => :request do
|
RSpec.describe ZipdownController, :type => :controller do
|
||||||
let(:student){FactoryGirl.create(:student)}
|
|
||||||
describe "单独下载某学生作业" do
|
describe "单独下载某学生作业" do
|
||||||
include_context "create user"
|
|
||||||
before {
|
before {
|
||||||
FactoryGirl.create(:user)
|
session[:user_id] = 3135
|
||||||
shared_login
|
session[:atime] = Time.now.utc.to_i
|
||||||
@homework = FactoryGirl.create(:homework, author_id: current_user.id)
|
session[:ctime] = Time.now.utc.to_i
|
||||||
|
|
||||||
@attch = HomeworkAttach.new
|
|
||||||
@attch.bid_id = @homework.id
|
|
||||||
@attch.user_id = student.id
|
|
||||||
@attachment = Attachment.new(:file => File.open(File.join(Rails.root, "spec/fixtures/test.jpg")))
|
|
||||||
@attachment.author = User.current
|
|
||||||
@attachment.container_type = 'HomeworkAttach'
|
|
||||||
@attachment.container_id = @attch.id
|
|
||||||
@attachment.filename = "test.jpg"
|
|
||||||
@attachment.save
|
|
||||||
params = {"1"=>{"filename" => "test.jpg", "description" =>"",
|
|
||||||
"is_public_checkbox"=>"1",
|
|
||||||
"token" => "#{@attachment.id}.#{@attachment.digest}" }
|
|
||||||
}
|
|
||||||
@attch.save_attachments(params)
|
|
||||||
@attch.name = "test.jpg"
|
|
||||||
@attch.save!
|
|
||||||
}
|
}
|
||||||
|
|
||||||
it "正常下载" do
|
it "正常下载" do
|
||||||
uu = current_user
|
get 'download_user_homework', {homework:24753}
|
||||||
allow(uu).to receive(:admin?).and_return(true)
|
|
||||||
allow(User).to receive(:current).and_return(uu)
|
|
||||||
get zipdown_download_user_homework_path, {homework:@attch.id}
|
|
||||||
expect(response).to have_http_status(:success)
|
expect(response).to have_http_status(:success)
|
||||||
expect(response.content_type).to eq(Mime::Type.new("applcation/zip",:zip))
|
expect(response.content_type).to eq(Mime::Type.new("applcation/zip",:zip))
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class ZipdownControllerTest < ActionController::TestCase
|
class ZipdownControllerTest < ActionController::TestCase
|
||||||
# test "the truth" do
|
def setup
|
||||||
# assert true
|
login
|
||||||
# end
|
end
|
||||||
|
|
||||||
|
test "能够正常下载学生作业" do
|
||||||
|
get 'download_user_homework', {homework:861}
|
||||||
|
assert response.response_code == 200
|
||||||
|
puts response
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -519,3 +519,11 @@ ActionView::TestCase::TestController.class_eval do
|
||||||
Rails.application.routes
|
Rails.application.routes
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class ActionController::TestCase
|
||||||
|
def login
|
||||||
|
session[:user_id] = 3135
|
||||||
|
session[:atime] = Time.now.utc.to_i
|
||||||
|
session[:ctime] = Time.now.utc.to_i
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue