discourse_dev 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e7cf21a4b27818d1c6c02ce68b6f3fec67fec0b5c7ce070203c4db6bec1e1e72
4
- data.tar.gz: 7bcd79d041f43cf6ed4843c2a3fe9f20bba915682516586064a0356acb5246df
3
+ metadata.gz: 78ead97c8c37d30f88d98a6e95a720647d73e564aa39872599488e3bcfc6fb0d
4
+ data.tar.gz: eb83d5121929c789d926d69fc54c9d79f25d32f1f1177b524212699e5a0e901d
5
5
  SHA512:
6
- metadata.gz: f964c9b509c0e219aff2161e49fc7d468861fefc85e6ce0a68250fbdfd2ca6d06d32ee7bf0b153ae99eb1dc9be0a1c4694752ec60ee7b0c71143d0283ebd5c15
7
- data.tar.gz: 207d473198144df8997a72eb9ab6f9070b24b924c6600be546d6bef2aeb26076c633b781caba9fb69590a2c99807004b0c19a49026f588d2cc7ae0470fa391b5
6
+ metadata.gz: dcd86419248de6cfe03d3e09e9d3eb7f7c0e67ba460cd7a23dd49eeb605b8ad66db5055b1dbb6333588aac6a4ee00c08b9cd8d7113571bc904d888238bac8fe5
7
+ data.tar.gz: 1e965d65532c23d0c8f5c0afd0e2d56f73b5d954219611416fb34bad0c8425f191caf47085122d7cb13234bdefed7da33ec7bcb6a000580d50ef44eb36353f09
data/lib/discourse_dev.rb CHANGED
@@ -10,4 +10,22 @@ I18n.reload! if I18n.backend.initialized?
10
10
  module DiscourseDev
11
11
  require 'discourse_dev/railtie'
12
12
  require 'discourse_dev/engine'
13
+
14
+ def self.config
15
+ @config ||= Config.new
16
+ end
17
+ end
18
+
19
+ require "active_record/database_configurations"
20
+
21
+ ActiveRecord::Tasks::DatabaseTasks.module_eval do
22
+ alias_method :rails_each_current_configuration, :each_current_configuration
23
+
24
+ private
25
+ def each_current_configuration(environment, name = nil)
26
+ rails_each_current_configuration(environment, name) { |db_config|
27
+ next if environment == "development" && ENV["SKIP_TEST_DATABASE"] == "1" && db_config["database"] != "discourse_development"
28
+ yield db_config
29
+ }
30
+ end
13
31
  end
@@ -70,8 +70,17 @@ module DiscourseDev
70
70
  end
71
71
 
72
72
  def set_seed
73
- seed = config["seed"] || default_config["seed"] || 1
73
+ seed = self.seed || 1
74
74
  Faker::Config.random = Random.new(seed)
75
75
  end
76
+
77
+ def start_date
78
+ DateTime.parse(config["start_date"] || default_config["start_date"])
79
+ end
80
+
81
+ def method_missing(name)
82
+ name = name.to_s
83
+ config[name] || default_config[name]
84
+ end
76
85
  end
77
86
  end
@@ -2,3 +2,5 @@ site_settings:
2
2
  tagging_enabled: true
3
3
  verbose_discourse_connect_logging: true
4
4
  seed: 1
5
+ start_date: "01/01/2020"
6
+ max_likes_count: 10
@@ -18,7 +18,8 @@ module DiscourseDev
18
18
  name: Faker::Discourse.unique.group,
19
19
  public_exit: Faker::Boolean.boolean,
20
20
  public_admission: Faker::Boolean.boolean,
21
- primary_group: Faker::Boolean.boolean
21
+ primary_group: Faker::Boolean.boolean,
22
+ created_at: Faker::Time.between(from: DiscourseDev.config.start_date, to: DateTime.now),
22
23
  }
23
24
  end
24
25
 
@@ -13,10 +13,12 @@ module DiscourseDev
13
13
  @topic = topic
14
14
 
15
15
  category = topic.category
16
+ @max_likes_count = DiscourseDev.config.max_likes_count
16
17
  unless category.groups.blank?
17
18
  group_ids = category.groups.pluck(:id)
18
19
  @user_ids = ::GroupUser.where(group_id: group_ids).pluck(:user_id)
19
20
  @user_count = @user_ids.count
21
+ @max_likes_count = @user_count - 1
20
22
  end
21
23
  end
22
24
 
@@ -24,15 +26,27 @@ module DiscourseDev
24
26
  {
25
27
  topic_id: topic.id,
26
28
  raw: Faker::Markdown.sandwich(sentences: 5),
27
- skip_validations: true
29
+ created_at: Faker::Time.between(from: topic.last_posted_at, to: DateTime.now),
30
+ skip_validations: true,
31
+ skip_guardian: true
28
32
  }
29
33
  end
30
34
 
31
35
  def create!
32
- begin
33
- PostCreator.new(user, data).create!
34
- rescue ActiveRecord::RecordNotSaved => e
35
- puts e
36
+ post = PostCreator.new(user, data).create!
37
+ topic.reload
38
+ generate_likes(post)
39
+ end
40
+
41
+ def generate_likes(post)
42
+ user_ids = [post.user_id]
43
+
44
+ Faker::Number.between(from: 0, to: @max_likes_count).times do
45
+ user = self.user
46
+ next if user_ids.include?(user.id)
47
+
48
+ PostActionCreator.new(user, post, PostActionType.types[:like], created_at: Faker::Time.between(from: post.created_at, to: DateTime.now)).perform
49
+ user_ids << user.id
36
50
  end
37
51
  end
38
52
 
@@ -45,6 +59,8 @@ module DiscourseDev
45
59
  end
46
60
 
47
61
  def populate!
62
+ generate_likes(topic.first_post)
63
+
48
64
  @count.times do |i|
49
65
  @index = i
50
66
  create!
@@ -12,6 +12,8 @@ module DiscourseDev
12
12
 
13
13
  def initialize(model, count = DEFAULT_COUNT)
14
14
  Faker::Discourse.unique.clear
15
+ RateLimiter.disable
16
+
15
17
  @model = model
16
18
  @type = model.to_s
17
19
  @count = count
@@ -4,6 +4,9 @@ def check_environment!
4
4
  if !Rails.env.development?
5
5
  raise "Database commands are only supported in development environment"
6
6
  end
7
+
8
+ ENV['SKIP_TEST_DATABASE'] = "1"
9
+ ENV['SKIP_MULTISITE'] = "1"
7
10
  end
8
11
 
9
12
  desc 'Run db:migrate:reset task and populate sample content for development environment'
@@ -17,7 +20,7 @@ end
17
20
 
18
21
  desc 'Initialize development environment'
19
22
  task 'dev:config' => ['db:load_config'] do |_, args|
20
- DiscourseDev::Config.new.update!
23
+ DiscourseDev.config.update!
21
24
  end
22
25
 
23
26
  desc 'Populate sample content for development environment'
@@ -27,6 +30,7 @@ task 'dev:populate' => ['db:load_config'] do |_, args|
27
30
  Rake::Task['categories:populate'].invoke
28
31
  Rake::Task['tags:populate'].invoke
29
32
  Rake::Task['topics:populate'].invoke
33
+ system("redis-cli flushall")
30
34
  end
31
35
 
32
36
  desc 'Repopulate sample datas in development environment'
@@ -11,12 +11,34 @@ module DiscourseDev
11
11
  end
12
12
 
13
13
  def data
14
+ max_views = 0
15
+
16
+ case Faker::Number.between(from: 0, to: 5)
17
+ when 0
18
+ max_views = 10
19
+ when 1
20
+ max_views = 100
21
+ when 2
22
+ max_views = SiteSetting.topic_views_heat_low
23
+ when 3
24
+ max_views = SiteSetting.topic_views_heat_medium
25
+ when 4
26
+ max_views = SiteSetting.topic_views_heat_high
27
+ when 5
28
+ max_views = SiteSetting.topic_views_heat_high + SiteSetting.topic_views_heat_medium
29
+ end
30
+
14
31
  {
15
32
  title: title[0, SiteSetting.max_topic_title_length],
16
33
  raw: Faker::Markdown.sandwich(sentences: 5),
17
34
  category: @category.id,
35
+ created_at: Faker::Time.between(from: DiscourseDev.config.start_date, to: DateTime.now),
18
36
  tags: tags,
19
- topic_opts: { custom_fields: { dev_sample: true } },
37
+ topic_opts: {
38
+ import_mode: true,
39
+ views: Faker::Number.between(from: 1, to: max_views),
40
+ custom_fields: { dev_sample: true }
41
+ },
20
42
  skip_validations: true
21
43
  }
22
44
  end
@@ -23,7 +23,8 @@ module DiscourseDev
23
23
  username: username,
24
24
  username_lower: username_lower,
25
25
  moderator: Faker::Boolean.boolean(true_ratio: 0.1),
26
- trust_level: Faker::Number.between(from: 1, to: 4)
26
+ trust_level: Faker::Number.between(from: 1, to: 4),
27
+ created_at: Faker::Time.between(from: DiscourseDev.config.start_date, to: DateTime.now),
27
28
  }
28
29
  end
29
30
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DiscourseDev
4
- VERSION = "0.0.7"
4
+ VERSION = "0.0.8"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discourse_dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinoth Kannan