In a Dev discussion titled Bulk creating users with rails etc., PrettyGirl seeks to bulk-create dummy users in a production Discourse instance using a custom Rake task, but struggles with the task not loading in the Docker container despite working locally. She created lib/tasks/users.rake and attempted to load it via rails c, but rake -T doesn’t list it in production. merefield suggests using rake dev:populate for seeding, but PrettyGirl clarifies she needs specific usernames for meaningful content, not random test data. merefield recommends adapting the dev:populate code, while pfaffman points to import scripts that handle CSVs and mentions plans for spreadsheet-based creation. PrettyGirl confirms the file works locally but not in production Docker, suspecting path or container issues. pfaffman asks if the file is placed in /var/www/discourse/lib/rake inside the container. PrettyGirl explains she can’t use local backups to avoid overwriting live content, and is developing on the live (non-public) site per forum advice. merefield strongly advises against live-site development, recommending local work packaged as plugins or theme components, citing an example plugin. pfaffman counters that rake tasks are safe for production imports since they don’t require restarts, and suggests backing up, testing locally, then restoring — or reverting if something goes wrong.
I want to add bulk usernames (to create initial dummy users to create posts).
So I was trying with creating a rake file, and loading it and then running it. But had no success. The rake file doesn’t even gets loaded sometimes, and when I use another method it gets loaded and then error thrown “I don’t know how to create …” error thrown by rails c (can’t even remember the error message as I tried thousand different methods over hours to make it work with no success)
What I did
Created users.rake file
cd /var/www/discourse
mkdir -p lib/tasks
touch lib/tasks/users.rake
Editing it with nano
cd /var/www/discourse/lib/tasks
sudo nano users.rake
And then pasted the following code into editor and saved
namespace :users do
desc "Create users from a list"
task :create, [:usernames, :password, :domain] => :environment do |task, args|
usernames = args[:usernames].split(',')
password = args[:password]
domain = args[:domain]
User.transaction do
usernames.each do |username|
next if User.exists?(username: username)
email = "#{username}@#{domain}"
user = User.new(username: username, email: email, password: password)
unless user.save
puts "Failed to save user #{username}: #{user.errors.full_messages.join(", ")}"
raise ActiveRecord::Rollback
end
end
end
end
end
Loaded into rails c and loaded it into tasks
rails console
load 'lib/tasks/users.rake'
exit
Then tried to create the users
./launcher enter app
rake users:create["username1,username2", "password", "domain.com"]
Is there any other method that I can try through the terminal without using third party things.
Your method will just fill the site with some random users and data, which I do not want. And I do not want a staged online site, I can just host it locally if I want.
This is for a production environment. Dummy users will actually have some meaningful topics. The purpose of this is not to present an empty site to the public.
So, kindly let me know of a solution related to the question I mentioned.
I just need to insert users (I have the name list for the users), into the main DB of discourse.
I amended the code, but the production discourse in the docker container, I created rake file with touch and edited in nano, then entered the app with ./launcher enter app, then entered rails and checked rake -T and the rake file does not gets loaded. This is my primary concern. I can’t even test out the file in production.
However, in localhost, theres no issue, I just copy and pasted the file into the lib/tasks and it works fine. This docker and docker container is pain when you need to access things directly. And I can’t even find out why it doesn’t automatically gets loaded into the rake tasks list.
So, I’m still stuck in the production as the rake file does not automatically gets loaded, so I can’t run the command.
Your site won’t support me if I didn’t use the docker, or else I would have been more than happy to remove the docker and host the site directly. That would make life much more easier.
The issue is that when local backup is uploaded to the live site, it will replace all the contents I made in live site. I have a local instance, but someone in this forum suggested me to have the live site to do the development. So, I’m now developing in the live site (it’s not officially public yet though).
And I put the file in lib/tasks, local instance works, not the live instance. I’ll try the lib/rake as well.
I think you shouldn’t develop rails or ember on a standard install, but I regularly to imports in a production container. Since it’s just a rake task you don’t even need to restart the server for changes to take effect.
Since it’s not public it should be safe to revert too a backup of something goes wrong. That’s probably where I would do it.
You could backup the live site and restore it to the dev site, do the work and then backup/restore back to the live site.