discourse_dev 0.0.1 → 0.0.7

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: a2aba4e03e170bb935d21b11561bad7ec4fa6863b1c93985cf341a8415a7b181
4
- data.tar.gz: dfb5e511e0564a2e2fec192834f0f21eb21e9c044f4132eb39edba489bc5b164
3
+ metadata.gz: e7cf21a4b27818d1c6c02ce68b6f3fec67fec0b5c7ce070203c4db6bec1e1e72
4
+ data.tar.gz: 7bcd79d041f43cf6ed4843c2a3fe9f20bba915682516586064a0356acb5246df
5
5
  SHA512:
6
- metadata.gz: 1ef8f8c750db41437f73e84e77a12e51360b4052b3be3e620222b7786c9e255bf81883c986dbb8be3a0cfc9c9e8d3dab5a5c5468e2afeb1e1c3657b0b2c25a36
7
- data.tar.gz: 7b40a195bd4df36c465d311dc71eee03bdc85f89192b5a937ec50a17fe842feadeec233e1328da3ca2be7386f44e334cef3756488fc01b9052ca3214fd933202
6
+ metadata.gz: f964c9b509c0e219aff2161e49fc7d468861fefc85e6ce0a68250fbdfd2ca6d06d32ee7bf0b153ae99eb1dc9be0a1c4694752ec60ee7b0c71143d0283ebd5c15
7
+ data.tar.gz: 207d473198144df8997a72eb9ab6f9070b24b924c6600be546d6bef2aeb26076c633b781caba9fb69590a2c99807004b0c19a49026f588d2cc7ae0470fa391b5
data/README.md CHANGED
@@ -1 +1,15 @@
1
1
  # Discourse Dev
2
+
3
+ ![Gem](https://img.shields.io/gem/v/discourse_dev)
4
+
5
+ Rake helper tasks for Discourse developers.
6
+
7
+ ## Available Rake Tasks
8
+
9
+ * `dev:reset`
10
+ * `dev:config`
11
+ * `dev:populate`
12
+ * `groups:populate`
13
+ * `users:populate`
14
+ * `categories:populate`
15
+ * `topics:populate`
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ DiscourseDev::Engine.routes.draw do
4
+ get ':username_or_email/become' => 'admin/impersonate#create', constraints: AdminConstraint.new
5
+ end
@@ -10,8 +10,8 @@ Gem::Specification.new do |spec|
10
10
  spec.authors = ["Vinoth Kannan"]
11
11
  spec.email = ["svkn.87@gmail.com"]
12
12
 
13
- spec.summary = %q{Rake helper for Discourse developers}
14
- spec.description = %q{Rake helper for Discourse developers}
13
+ spec.summary = %q{Rake helper tasks for Discourse developers}
14
+ spec.description = %q{Rake helper tasks for Discourse developers}
15
15
  spec.homepage = "https://github.com/discourse/discourse_dev"
16
16
  spec.license = "MIT"
17
17
 
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_runtime_dependency "faker", "~> 2.16"
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 2.0"
24
- spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rake", ">= 12.3.3"
25
25
 
26
26
  spec.required_ruby_version = '>= 2.6.0'
27
27
  end
data/lib/discourse_dev.rb CHANGED
@@ -8,5 +8,6 @@ I18n.load_path += Dir[File.join(__dir__, 'faker', 'locales', '**/*.yml')]
8
8
  I18n.reload! if I18n.backend.initialized?
9
9
 
10
10
  module DiscourseDev
11
- require 'discourse_dev/railtie' if defined?(Rails)
11
+ require 'discourse_dev/railtie'
12
+ require 'discourse_dev/engine'
12
13
  end
@@ -9,21 +9,52 @@ module DiscourseDev
9
9
 
10
10
  def initialize(count = DEFAULT_COUNT)
11
11
  super(::Category, count)
12
+ @parent_category_ids = ::Category.where(parent_category_id: nil).pluck(:id)
12
13
  end
13
14
 
14
15
  def data
15
- name = Faker::Name.name
16
- email = Faker::Internet.email(name: name)
17
- username = Faker::Internet.username(specifier: name)[0, SiteSetting.max_username_length]
18
- username_lower = username.downcase
16
+ name = Faker::Discourse.unique.category
17
+ parent_category_id = nil
18
+
19
+ if Faker::Boolean.boolean(true_ratio: 0.6)
20
+ offset = Faker::Number.between(from: 0, to: @parent_category_ids.count - 1)
21
+ parent_category_id = @parent_category_ids[offset]
22
+ @permissions = ::Category.find(parent_category_id).permissions_params.presence
23
+ else
24
+ @permissions = nil
25
+ end
19
26
 
20
27
  {
21
28
  name: name,
22
- email: email,
23
- username: username,
24
- username_lower: username_lower,
25
- trust_level: Faker::Number.between(from: 1, to: 4)
29
+ description: Faker::Lorem.paragraph,
30
+ user_id: ::Discourse::SYSTEM_USER_ID,
31
+ color: Faker::Color.hex_color.last(6),
32
+ parent_category_id: parent_category_id
26
33
  }
27
34
  end
35
+
36
+ def permissions
37
+ return @permissions if @permissions.present?
38
+ return { everyone: :full } if Faker::Boolean.boolean(true_ratio: 0.75)
39
+
40
+ permission = {}
41
+ group = Group.random
42
+ permission[group.id] = Faker::Number.between(from: 1, to: 3)
43
+
44
+ permission
45
+ end
46
+
47
+ def create!
48
+ super do |category|
49
+ category.set_permissions(permissions)
50
+ category.save!
51
+
52
+ @parent_category_ids << category.id if category.parent_category_id.blank?
53
+ end
54
+ end
55
+
56
+ def self.random
57
+ super(::Category)
58
+ end
28
59
  end
29
60
  end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails'
4
+
5
+ module DiscourseDev
6
+ class Config
7
+ attr_reader :config, :default_config
8
+
9
+ def initialize
10
+ @default_config = YAML.load_file(File.join(File.expand_path(__dir__), "config.yml"))
11
+ file_path = File.join(Rails.root, "config", "dev.yml")
12
+
13
+ if File.exists?(file_path)
14
+ @config = YAML.load_file(file_path)
15
+ else
16
+ @config = {}
17
+ end
18
+ end
19
+
20
+ def update!
21
+ update_site_settings
22
+ create_admin_user
23
+ set_seed
24
+ end
25
+
26
+ def update_site_settings
27
+ puts "Updating site settings..."
28
+
29
+ site_settings = config["site_settings"] || {}
30
+
31
+ site_settings.each do |key, value|
32
+ puts "#{key} = #{value}"
33
+ SiteSetting.set(key, value)
34
+ end
35
+
36
+ keys = site_settings.keys
37
+
38
+ default_config["site_settings"].each do |key, value|
39
+ next if keys.include?(key)
40
+
41
+ puts "#{key} = #{value}"
42
+ SiteSetting.set(key, value)
43
+ end
44
+
45
+ SiteSetting.refresh!
46
+ end
47
+
48
+ def create_admin_user
49
+ puts "Creating default admin user account..."
50
+
51
+ settings = config["admin"]
52
+
53
+ if settings.present?
54
+ email = settings["email"]
55
+
56
+ admin = ::User.create!(
57
+ email: email,
58
+ username: settings["username"] || UserNameSuggester.suggest(email),
59
+ password: settings["password"]
60
+ )
61
+ admin.grant_admin!
62
+ if admin.trust_level < 1
63
+ admin.change_trust_level!(1)
64
+ end
65
+ admin.email_tokens.update_all confirmed: true
66
+ admin.activate
67
+ else
68
+ Rake::Task['admin:create'].invoke
69
+ end
70
+ end
71
+
72
+ def set_seed
73
+ seed = config["seed"] || default_config["seed"] || 1
74
+ Faker::Config.random = Random.new(seed)
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,4 @@
1
+ site_settings:
2
+ tagging_enabled: true
3
+ verbose_discourse_connect_logging: true
4
+ seed: 1
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DiscourseDev
4
+ class Engine < Rails::Engine; end
5
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'discourse_dev/record'
4
+ require 'rails'
5
+ require 'faker'
6
+
7
+ module DiscourseDev
8
+ class Group < Record
9
+
10
+ DEFAULT_COUNT = 15.freeze
11
+
12
+ def initialize(count = DEFAULT_COUNT)
13
+ super(::Group, count)
14
+ end
15
+
16
+ def data
17
+ {
18
+ name: Faker::Discourse.unique.group,
19
+ public_exit: Faker::Boolean.boolean,
20
+ public_admission: Faker::Boolean.boolean,
21
+ primary_group: Faker::Boolean.boolean
22
+ }
23
+ end
24
+
25
+ def create!
26
+ super do |group|
27
+ if Faker::Boolean.boolean
28
+ group.add_owner(::Discourse.system_user)
29
+ group.allow_membership_requests = true
30
+ group.save!
31
+ end
32
+ end
33
+ end
34
+
35
+ def self.random
36
+ super(::Group)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'discourse_dev/record'
4
+ require 'faker'
5
+
6
+ module DiscourseDev
7
+ class Post < Record
8
+
9
+ attr_reader :topic
10
+
11
+ def initialize(topic, count = DEFAULT_COUNT)
12
+ super(::Post, count)
13
+ @topic = topic
14
+
15
+ category = topic.category
16
+ unless category.groups.blank?
17
+ group_ids = category.groups.pluck(:id)
18
+ @user_ids = ::GroupUser.where(group_id: group_ids).pluck(:user_id)
19
+ @user_count = @user_ids.count
20
+ end
21
+ end
22
+
23
+ def data
24
+ {
25
+ topic_id: topic.id,
26
+ raw: Faker::Markdown.sandwich(sentences: 5),
27
+ skip_validations: true
28
+ }
29
+ end
30
+
31
+ def create!
32
+ begin
33
+ PostCreator.new(user, data).create!
34
+ rescue ActiveRecord::RecordNotSaved => e
35
+ puts e
36
+ end
37
+ end
38
+
39
+ def user
40
+ return User.random if topic.category.groups.blank?
41
+ return Discourse.system_user if @user_ids.blank?
42
+
43
+ position = Faker::Number.between(from: 0, to: @user_count - 1)
44
+ ::User.find(@user_ids[position])
45
+ end
46
+
47
+ def populate!
48
+ @count.times do |i|
49
+ @index = i
50
+ create!
51
+ end
52
+ end
53
+
54
+ def self.add_replies!(args)
55
+ if !args[:topic_id]
56
+ puts "Topic ID is required. Aborting."
57
+ return
58
+ end
59
+
60
+ if !::Topic.find_by_id(args[:topic_id])
61
+ puts "Topic ID does not match topic in DB, aborting."
62
+ return
63
+ end
64
+
65
+ topic = ::Topic.find_by_id(args[:topic_id])
66
+ count = args[:count] ? args[:count].to_i : 50
67
+
68
+ puts "Creating #{count} replies in '#{topic.title}'"
69
+
70
+ count.times do |i|
71
+ @index = i
72
+ begin
73
+ reply = {
74
+ topic_id: topic.id,
75
+ raw: Faker::Markdown.sandwich(sentences: 5),
76
+ skip_validations: true
77
+ }
78
+ PostCreator.new(User.random, reply).create!
79
+ rescue ActiveRecord::RecordNotSaved => e
80
+ puts e
81
+ end
82
+ end
83
+
84
+ puts "Done!"
85
+ end
86
+
87
+ end
88
+ end
@@ -11,28 +11,56 @@ module DiscourseDev
11
11
  attr_reader :model, :type
12
12
 
13
13
  def initialize(model, count = DEFAULT_COUNT)
14
+ Faker::Discourse.unique.clear
14
15
  @model = model
15
16
  @type = model.to_s
16
17
  @count = count
18
+ @index = nil
17
19
  end
18
20
 
19
21
  def create!
20
- model.create!(data)
21
- putc "."
22
+ record = model.create!(data)
23
+ yield(record) if block_given?
22
24
  end
23
25
 
24
26
  def populate!
25
- puts "Creating #{count} sample #{type.downcase}s"
26
- count.times { create! }
27
+ if current_count >= @count
28
+ puts "Already have #{@count}+ #{type.downcase} records."
29
+
30
+ Rake.application.top_level_tasks.each do |task_name|
31
+ Rake::Task[task_name].reenable
32
+ end
33
+
34
+ Rake::Task['dev:repopulate'].invoke
35
+ return
36
+ end
37
+
38
+ puts "Creating #{@count} sample #{type.downcase} records"
39
+
40
+ @count.times do |i|
41
+ @index = i
42
+ create!
43
+ putc "."
44
+ end
45
+
27
46
  puts
28
47
  end
29
48
 
30
- def count
31
- @count || DEFAULT_COUNT
49
+ def index
50
+ @index
51
+ end
52
+
53
+ def current_count
54
+ model.count
32
55
  end
33
56
 
34
57
  def self.populate!
35
58
  self.new.populate!
36
59
  end
60
+
61
+ def self.random(model)
62
+ offset = Faker::Number.between(from: 0, to: model.count - 1)
63
+ model.offset(offset).first
64
+ end
37
65
  end
38
66
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'discourse_dev/record'
4
+ require 'rails'
5
+ require 'faker'
6
+
7
+ module DiscourseDev
8
+ class Tag < Record
9
+
10
+ def initialize(count = DEFAULT_COUNT)
11
+ super(::Tag, count)
12
+ end
13
+
14
+ def data
15
+ {
16
+ name: Faker::Discourse.unique.tag,
17
+ }
18
+ end
19
+ end
20
+ end
@@ -11,12 +11,33 @@ task 'dev:reset' => ['db:load_config'] do |_, args|
11
11
  check_environment!
12
12
 
13
13
  Rake::Task['db:migrate:reset'].invoke
14
- Rake::Task['admin:create'].invoke
14
+ Rake::Task['dev:config'].invoke
15
15
  Rake::Task['dev:populate'].invoke
16
16
  end
17
17
 
18
+ desc 'Initialize development environment'
19
+ task 'dev:config' => ['db:load_config'] do |_, args|
20
+ DiscourseDev::Config.new.update!
21
+ end
22
+
18
23
  desc 'Populate sample content for development environment'
19
24
  task 'dev:populate' => ['db:load_config'] do |_, args|
25
+ Rake::Task['groups:populate'].invoke
20
26
  Rake::Task['users:populate'].invoke
27
+ Rake::Task['categories:populate'].invoke
28
+ Rake::Task['tags:populate'].invoke
21
29
  Rake::Task['topics:populate'].invoke
22
30
  end
31
+
32
+ desc 'Repopulate sample datas in development environment'
33
+ task 'dev:repopulate' => ['db:load_config'] do |_, args|
34
+ require 'highline/import'
35
+
36
+ answer = ask("Do you want to repopulate the database with fresh data? It will recreate DBs and run migration from scratch before generating all the samples. (Y/n) ")
37
+
38
+ if (answer == "" || answer.downcase == 'y')
39
+ Rake::Task['dev:reset'].invoke
40
+ else
41
+ puts "You can run `dev:reset` rake task to do this repopulate action anytime."
42
+ end
43
+ end
@@ -1,11 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ desc 'Creates sample categories'
4
+ task 'groups:populate' => ['db:load_config'] do |_, args|
5
+ DiscourseDev::Group.populate!
6
+ end
7
+
3
8
  desc 'Creates sample user accounts'
4
9
  task 'users:populate' => ['db:load_config'] do |_, args|
5
10
  DiscourseDev::User.populate!
6
11
  end
7
12
 
13
+ desc 'Creates sample categories'
14
+ task 'categories:populate' => ['db:load_config'] do |_, args|
15
+ DiscourseDev::Category.populate!
16
+ end
17
+
18
+ desc 'Creates sample tags'
19
+ task 'tags:populate' => ['db:load_config'] do |_, args|
20
+ DiscourseDev::Tag.populate!
21
+ end
22
+
8
23
  desc 'Creates sample topics'
9
24
  task 'topics:populate' => ['db:load_config'] do |_, args|
10
25
  DiscourseDev::Topic.populate!
11
26
  end
27
+
28
+ desc 'Add replies to a topic'
29
+ task 'replies:populate', [:topic_id, :count] => ['db:load_config'] do |_, args|
30
+ DiscourseDev::Post.add_replies!(args)
31
+ end
@@ -8,26 +8,64 @@ module DiscourseDev
8
8
 
9
9
  def initialize(count = DEFAULT_COUNT)
10
10
  super(::Topic, count)
11
- @category_ids = ::Category.pluck(:id)
12
- @user_count = ::User.count
13
11
  end
14
12
 
15
13
  def data
16
14
  {
17
- title: Faker::Lorem.sentence(word_count: 3, supplemental: true, random_words_to_add: 4).chomp(".")[0, SiteSetting.max_topic_title_length],
15
+ title: title[0, SiteSetting.max_topic_title_length],
18
16
  raw: Faker::Markdown.sandwich(sentences: 5),
19
- category_id: @category_ids.sample,
17
+ category: @category.id,
18
+ tags: tags,
20
19
  topic_opts: { custom_fields: { dev_sample: true } },
21
20
  skip_validations: true
22
21
  }
23
22
  end
24
23
 
24
+ def title
25
+ if index <= I18n.t("faker.discourse.topics").count
26
+ Faker::Discourse.unique.topic
27
+ else
28
+ Faker::Lorem.unique.sentence(word_count: 3, supplemental: true, random_words_to_add: 4).chomp(".")
29
+ end
30
+ end
31
+
32
+ def tags
33
+ @tags = []
34
+
35
+ Faker::Number.between(from: 0, to: 3).times do
36
+ @tags << Faker::Discourse.tag
37
+ end
38
+
39
+ @tags.uniq
40
+ end
41
+
25
42
  def create!
26
- offset = rand(@user_count)
27
- user = ::User.offset(offset).first
43
+ @category = Category.random
44
+ topic = data
45
+ post = PostCreator.new(user, topic).create!
46
+
47
+ if topic[:title] == "Coolest thing you have seen today"
48
+ reply_count = 99
49
+ else
50
+ reply_count = Faker::Number.between(from: 0, to: 12)
51
+ end
52
+
53
+ Post.new(post.topic, reply_count).populate!
54
+ end
55
+
56
+ def user
57
+ return User.random if @category.groups.blank?
58
+
59
+ group_ids = @category.groups.pluck(:id)
60
+ user_ids = ::GroupUser.where(group_id: group_ids).pluck(:user_id)
61
+ user_count = user_ids.count
62
+ position = Faker::Number.between(from: 0, to: user_count - 1)
63
+ ::User.find(user_ids[position] || Discourse::SYSTEM_USER_ID)
64
+ end
28
65
 
29
- PostCreator.new(user, data).create!
30
- putc "."
66
+ def current_count
67
+ category_definition_topic_ids = ::Category.pluck(:topic_id)
68
+ ::Topic.where(archetype: :regular).where.not(id: category_definition_topic_ids).count
31
69
  end
32
70
  end
33
71
  end
@@ -12,9 +12,9 @@ module DiscourseDev
12
12
  end
13
13
 
14
14
  def data
15
- name = Faker::Name.name
16
- email = Faker::Internet.email(name: name)
17
- username = Faker::Internet.username(specifier: name)[0, SiteSetting.max_username_length]
15
+ name = Faker::Name.unique.name
16
+ email = Faker::Internet.unique.email(name: name)
17
+ username = Faker::Internet.unique.username(specifier: name)[0, SiteSetting.max_username_length]
18
18
  username_lower = username.downcase
19
19
 
20
20
  {
@@ -22,8 +22,24 @@ module DiscourseDev
22
22
  email: email,
23
23
  username: username,
24
24
  username_lower: username_lower,
25
+ moderator: Faker::Boolean.boolean(true_ratio: 0.1),
25
26
  trust_level: Faker::Number.between(from: 1, to: 4)
26
27
  }
27
28
  end
29
+
30
+ def create!
31
+ super do |user|
32
+ user.activate
33
+ Faker::Number.between(from: 0, to: 2).times do
34
+ group = Group.random
35
+
36
+ group.add(user)
37
+ end
38
+ end
39
+ end
40
+
41
+ def self.random
42
+ super(::User)
43
+ end
28
44
  end
29
45
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DiscourseDev
4
- VERSION = "0.0.1"
4
+ VERSION = "0.0.7"
5
5
  end
@@ -1,12 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'faker'
4
+
3
5
  module Faker
4
6
  class Discourse < Base
5
7
  class << self
6
8
 
9
+ def tag
10
+ fetch('discourse.tags')
11
+ end
12
+
7
13
  def category
8
14
  fetch('discourse.categories')
9
15
  end
16
+
17
+ def group
18
+ fetch('discourse.groups')
19
+ end
20
+
21
+ def topic
22
+ fetch('discourse.topics')
23
+ end
10
24
  end
11
25
  end
12
26
  end
@@ -4,7 +4,6 @@ en:
4
4
  categories:
5
5
  - movies
6
6
  - tech
7
- - general
8
7
  - videos
9
8
  - gaming
10
9
  - sports
@@ -19,3 +18,117 @@ en:
19
18
  - announcements
20
19
  - bug
21
20
  - community
21
+ - Events
22
+ - Education
23
+ - General Discussion
24
+ - News
25
+ - Suggestions
26
+ - Introduce Yourself
27
+ - Frequently Asked Questions
28
+ - Off-Topic
29
+ - Expert Advice
30
+ - Home and Living
31
+ - Babies and Kids
32
+ - International
33
+ - Partners
34
+ - Getting Started
35
+ - Creator's Corner
36
+ - Feature Requests
37
+ - Other Languages
38
+ - Travelling
39
+ - Recipes
40
+ - Newbies
41
+ - Covid-19
42
+ - Resources
43
+ - Docs
44
+ - Publishing
45
+ - Marketplace
46
+ - Community Guidelines
47
+ - Archived
48
+ - Meta
49
+ - Software and Operating Systems
50
+ - Arts & Media
51
+ - Science and Engineering
52
+ - Quizzes and Challenges
53
+ - Politics
54
+ - Roadmap
55
+ - Share Tips and Tricks
56
+ groups:
57
+ - team
58
+ - designers
59
+ - authors
60
+ - contributors
61
+ - customers
62
+ - subscribers
63
+ - creators
64
+ - translators
65
+ - editors
66
+ - developers
67
+ - publishers
68
+ - leaders
69
+ - advertisers
70
+ - early-birds
71
+ - partners
72
+ topics:
73
+ - Whoa. Check out this crazy paper artwork
74
+ - What’s the coolest thing you have worked on?
75
+ - A bear, however hard he tries, grows tubby without exercise
76
+ - Impressions Games City Builders
77
+ - Recommended reading for Community and FOSS enthusiasts
78
+ - Robots are taking our jobs!
79
+ - Modernizing the antiquated boxing scoring system
80
+ - Death by poisonous and electric watermelon
81
+ - D&D Gallery - Prey for Smiley Bob play session [with terrain]
82
+ - Why is uninhabited land in the US so closed off?
83
+ - The Room Appreciation Topic
84
+ - Recommend a great YouTube video
85
+ - Favorite TV show scene?
86
+ - Is the Second Amendment still relevant today?
87
+ - What methods/books did you use to learn Ruby?
88
+ - What is your favorite TED Video
89
+ - MLP:FIM Season 3 (spoilers ahoy!)
90
+ - Do you use a mobile device for ALL your work? Tell me how!
91
+ - What’s your all-time favorite movie scene?
92
+ - Enjoyable children’s shows for adults
93
+ - Totally amped about the 80s
94
+ - Do microwave ovens kill bacteria?
95
+ - Most inspirational movie you have ever seen?
96
+ - Catching all 151 in 2 hours 😀
97
+ - Charlie The Unicorn 4
98
+ - Video Games for Pre-Teens?
99
+ - Online learning
100
+ - Mark of the Ninja
101
+ - Funniest thing you’ve seen today?
102
+ - Coolest thing you have seen today
103
+ - Share your Hallowe’en pictures
104
+ tags:
105
+ - art
106
+ - code
107
+ - official
108
+ - feedback
109
+ - fun
110
+ - dev
111
+ - design
112
+ - test
113
+ - blog
114
+ - cloud
115
+ - tv
116
+ - movies
117
+ - review
118
+ - news
119
+ - link
120
+ - video
121
+ - photos
122
+ - lead
123
+ - mobile
124
+ - music
125
+ - release
126
+ - notes
127
+ - todo
128
+ - duplicate
129
+ - praise
130
+ - faq
131
+ - job-application
132
+ - rfc
133
+ - email
134
+ - wiki
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discourse_dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinoth Kannan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-04 00:00:00.000000000 Z
11
+ date: 2021-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faker
@@ -42,17 +42,17 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: 12.3.3
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
55
- description: Rake helper for Discourse developers
54
+ version: 12.3.3
55
+ description: Rake helper tasks for Discourse developers
56
56
  email:
57
57
  - svkn.87@gmail.com
58
58
  executables: []
@@ -65,11 +65,18 @@ files:
65
65
  - LICENSE.txt
66
66
  - README.md
67
67
  - Rakefile
68
+ - config/routes.rb
68
69
  - discourse_dev.gemspec
69
70
  - lib/discourse_dev.rb
70
71
  - lib/discourse_dev/category.rb
72
+ - lib/discourse_dev/config.rb
73
+ - lib/discourse_dev/config.yml
74
+ - lib/discourse_dev/engine.rb
75
+ - lib/discourse_dev/group.rb
76
+ - lib/discourse_dev/post.rb
71
77
  - lib/discourse_dev/railtie.rb
72
78
  - lib/discourse_dev/record.rb
79
+ - lib/discourse_dev/tag.rb
73
80
  - lib/discourse_dev/tasks/dev.rake
74
81
  - lib/discourse_dev/tasks/populate.rake
75
82
  - lib/discourse_dev/topic.rb
@@ -99,5 +106,5 @@ requirements: []
99
106
  rubygems_version: 3.0.3
100
107
  signing_key:
101
108
  specification_version: 4
102
- summary: Rake helper for Discourse developers
109
+ summary: Rake helper tasks for Discourse developers
103
110
  test_files: []