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 +4 -4
- data/lib/discourse_dev.rb +18 -0
- data/lib/discourse_dev/config.rb +10 -1
- data/lib/discourse_dev/config.yml +2 -0
- data/lib/discourse_dev/group.rb +2 -1
- data/lib/discourse_dev/post.rb +21 -5
- data/lib/discourse_dev/record.rb +2 -0
- data/lib/discourse_dev/tasks/dev.rake +5 -1
- data/lib/discourse_dev/topic.rb +23 -1
- data/lib/discourse_dev/user.rb +2 -1
- data/lib/discourse_dev/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78ead97c8c37d30f88d98a6e95a720647d73e564aa39872599488e3bcfc6fb0d
|
4
|
+
data.tar.gz: eb83d5121929c789d926d69fc54c9d79f25d32f1f1177b524212699e5a0e901d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/discourse_dev/config.rb
CHANGED
@@ -70,8 +70,17 @@ module DiscourseDev
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def set_seed
|
73
|
-
seed =
|
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
|
data/lib/discourse_dev/group.rb
CHANGED
@@ -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
|
|
data/lib/discourse_dev/post.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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!
|
data/lib/discourse_dev/record.rb
CHANGED
@@ -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
|
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'
|
data/lib/discourse_dev/topic.rb
CHANGED
@@ -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: {
|
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
|
data/lib/discourse_dev/user.rb
CHANGED
@@ -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
|
|