cs_comments_service/Rakefile

155 строки
4.7 KiB
Ruby
Исходник Обычный вид История

2012-06-21 02:25:35 +04:00
require 'rubygems'
require 'bundler'
Bundler.setup
Bundler.require
2012-06-21 02:25:35 +04:00
desc "Load the environment"
task :environment do
env = ENV["SINATRA_ENV"] || "development"
2012-07-14 10:31:05 +04:00
Sinatra::Base.environment = env
Mongoid.load!("config/mongoid.yml")
Mongoid.logger.level = Logger::INFO
2012-07-17 01:24:12 +04:00
module CommentService
class << self; attr_accessor :config; end
end
CommentService.config = YAML.load_file("config/application.yml")
Dir[File.dirname(__FILE__) + '/models/*.rb'].each {|file| require file}
2012-06-21 02:25:35 +04:00
end
2012-07-16 07:40:29 +04:00
namespace :test do
2012-07-17 03:50:54 +04:00
task :nested_comments => :environment do
2012-07-16 07:40:29 +04:00
puts "checking"
50.times do
Comment.delete_all
CommentThread.delete_all
Commentable.delete_all
User.delete_all
2012-07-17 03:35:34 +04:00
Notification.delete_all
2012-07-17 07:05:16 +04:00
Subscription.delete_all
2012-07-16 07:40:29 +04:00
commentable = Commentable.create!(commentable_type: "questions", commentable_id: "1")
2012-07-17 03:50:54 +04:00
user = User.create!(external_id: "1")
2012-07-16 07:40:29 +04:00
2012-07-17 03:50:54 +04:00
comment_thread = commentable.comment_threads.new(title: "I can't solve this problem", body: "can anyone help me?", course_id: "1")
2012-07-16 07:40:29 +04:00
comment_thread.author = user
comment_thread.save!
2012-07-17 03:50:54 +04:00
comment = comment_thread.comments.new(body: "this problem is so easy", course_id: "1")
2012-07-16 07:40:29 +04:00
comment.author = user
comment.save!
2012-07-17 03:50:54 +04:00
comment1 = comment.children.new(body: "not for me!", course_id: "1")
2012-07-16 07:40:29 +04:00
comment1.author = user
comment1.save!
2012-07-17 03:50:54 +04:00
comment2 = comment1.children.new(body: "not for me neither!", course_id: "1")
2012-07-16 07:40:29 +04:00
comment2.author = user
comment2.save!
children = comment_thread.comments.first.to_hash(recursive: true)["children"]
if children.length == 2
pp comment_thread.to_hash(recursive: true)
pp comment_thread.comments.first.descendants_and_self.to_a
puts "error!"
break
end
puts "passed once"
end
puts "passed"
end
end
2012-06-21 02:25:35 +04:00
namespace :db do
task :init => :environment do
puts "creating indexes..."
Comment.create_indexes
CommentThread.create_indexes
User.create_indexes
Commentable.create_indexes
2012-07-17 03:35:34 +04:00
Notification.create_indexes
2012-07-17 07:05:16 +04:00
Subscription.create_indexes
Delayed::Backend::Mongoid::Job.create_indexes
puts "finished"
end
2012-07-14 10:31:05 +04:00
task :seed => :environment do
2012-07-14 10:31:05 +04:00
Commentable.delete_all
2012-06-21 02:25:35 +04:00
Comment.delete_all
CommentThread.delete_all
2012-06-22 22:28:15 +04:00
User.delete_all
2012-07-17 07:05:16 +04:00
Notification.delete_all
Subscription.delete_all
2012-07-14 10:31:05 +04:00
beginning_time = Time.now
2012-06-27 02:59:08 +04:00
level_limit = YAML.load_file("config/application.yml")["level_limit"]
2012-06-28 00:54:31 +04:00
2012-07-17 01:24:12 +04:00
users = (1..10).map {|id| User.find_or_create_by(external_id: id.to_s)}
2012-07-14 10:31:05 +04:00
2012-07-17 01:24:12 +04:00
10.times do
2012-07-17 07:05:16 +04:00
users.sample.subscribe(users.sample)
2012-07-17 01:24:12 +04:00
end
def generate_comments(commentable_type, commentable_id, level_limit, users)
commentable = Commentable.create!(commentable_type: commentable_type, commentable_id: commentable_id)
2012-06-24 04:13:00 +04:00
5.times do
comment_thread = commentable.comment_threads.new(
2012-07-14 10:31:05 +04:00
commentable_type: commentable_type, commentable_id: commentable_id,
body: "This is a post", title: "Post No.#{rand(10)}",
course_id: "1")
2012-07-17 01:24:12 +04:00
comment_thread.author = users.sample
2012-07-14 10:31:05 +04:00
comment_thread.save!
3.times do
comment = comment_thread.comments.new(body: "top comment", course_id: "1")
2012-07-17 01:24:12 +04:00
comment.author = users.sample
2012-07-14 10:31:05 +04:00
comment.endorsed = [true, false].sample
comment.save!
end
10.times do
2012-07-14 10:31:05 +04:00
comment = Comment.where(comment_thread_id: comment_thread.id).reject{|c| c.depth >= level_limit}.sample
sub_comment = comment.children.new(body: "comment body", course_id: "1")
2012-07-17 01:24:12 +04:00
sub_comment.author = users.sample
2012-07-14 10:31:05 +04:00
sub_comment.endorsed = [true, false].sample
sub_comment.save!
end
puts "Generating a comment thread for #{commentable_type} No.#{commentable_id}"
2012-06-24 04:13:00 +04:00
end
2012-06-21 02:25:35 +04:00
end
2012-06-28 00:54:31 +04:00
2012-07-17 01:24:12 +04:00
generate_comments("questions" , 1, level_limit, users)
generate_comments("questions" , 2, level_limit, users)
generate_comments("courses" , 1, level_limit, users)
generate_comments("lectures" , 1, level_limit, users)
generate_comments("lectures" , 2, level_limit, users)
2012-07-14 10:31:05 +04:00
puts "voting"
users = []
(1..10).each do |id|
2012-07-17 01:24:12 +04:00
users << User.find_or_create_by(external_id: id.to_s)
2012-07-14 10:31:05 +04:00
end
CommentThread.all.each do |c|
(0...10).each do |i|
users[i].vote(c, [:up, :down].sample)
end
end
2012-07-14 10:31:05 +04:00
Comment.all.each do |c|
(0...10).each do |i|
2012-07-14 10:31:05 +04:00
users[i].vote(c, [:up, :down].sample)
2012-06-21 02:25:35 +04:00
end
end
2012-07-14 10:31:05 +04:00
end_time = Time.now
puts "Number of comments generated: #{Comment.count}"
puts "Number of comment threads generated: #{CommentThread.count}"
puts "Time elapsed #{(end_time - beginning_time)*1000} milliseconds"
2012-06-21 02:25:35 +04:00
end
end