Last active
October 3, 2018 03:17
Revisions
-
Timotheus Pokorra revised this gist
Oct 3, 2018 . 1 changed file with 6 additions and 6 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -78,8 +78,8 @@ def create_admin(seq) unbundled_require 'gabbler' end puts "Creating 10 users" users = 10.times.map do |i| putc "." create_admin(i) end @@ -92,18 +92,18 @@ def create_admin(seq) end puts puts "Creating 50 topics" topic_ids = 50.times.map do post = PostCreator.create(users.sample, raw: sentence, title: sentence[0..50].strip, category: categories.sample.name, skip_validations: true) putc "." post.topic_id end puts puts "creating 200 replies" 200.times do putc "." PostCreator.create(users.sample, raw: sentence, topic_id: topic_ids.sample, skip_validations: true) end -
Timotheus Pokorra revised this gist
Oct 3, 2018 . 1 changed file with 3 additions and 2 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -57,13 +57,14 @@ def create_admin(seq) SiteSetting.queue_jobs = false unless Rails.env == "production" puts "This script should only be used in the profile environment" exit end # by default, Discourse has a "system" and `discobot` account # and in my setup I have an admin account configured if User.count > 3 puts "Only run this script against an empty DB" exit end -
Timotheus Pokorra created this gist
Oct 3, 2018 .There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,112 @@ # can be used to generate a mock db for profiling purposes # we want our script to generate a consistent output, to do so # we monkey patch array sample so it always uses the same rng class Array RNG = Random.new(1098109928029800) def sample self[RNG.rand(size)] end end # based on https://gist.github.com/zaius/2643079 def unbundled_require(gem) if defined?(::Bundler) spec_path = Dir.glob("#{Gem.dir}/specifications/#{gem}-*.gemspec").last if spec_path.nil? raise LoadError end spec = Gem::Specification.load spec_path spec.activate end begin require gem end end def sentence @gabbler ||= Gabbler.new.tap do |gabbler| story = File.read(File.dirname(__FILE__) + "/alice.txt") gabbler.learn(story) end sentence = "" until sentence.length > 800 do sentence << @gabbler.sentence sentence << "\n" end sentence end def create_admin(seq) User.new.tap { |admin| admin.email = "admin@localhost#{seq}.fake" admin.username = "admin#{seq}" admin.password = "password12345abc" admin.save! admin.grant_admin! admin.change_trust_level!(TrustLevel[4]) admin.activate } end require File.expand_path(File.dirname(__FILE__) + "/../config/environment") SiteSetting.queue_jobs = false unless Rails.env == "profile" puts "This script should only be used in the profile environment" exit end # by default, Discourse has a "system" and `discobot` account if User.count > 2 puts "Only run this script against an empty DB" exit end require 'optparse' begin unbundled_require 'gabbler' rescue LoadError puts "installing gabbler gem" puts `gem install gabbler` unbundled_require 'gabbler' end puts "Creating 100 users" users = 100.times.map do |i| putc "." create_admin(i) end puts puts "Creating 10 categories" categories = 10.times.map do |i| putc "." Category.create(name: "category#{i}", text_color: "ffffff", color: "000000", user: users.first) end puts puts "Creating 100 topics" topic_ids = 100.times.map do post = PostCreator.create(users.sample, raw: sentence, title: sentence[0..50].strip, category: categories.sample.name, skip_validations: true) putc "." post.topic_id end puts puts "creating 2000 replies" 2000.times do putc "." PostCreator.create(users.sample, raw: sentence, topic_id: topic_ids.sample, skip_validations: true) end # no sidekiq so update some stuff Category.update_stats Jobs::PeriodicalUpdates.new.execute(nil)