discourse_dev 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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