Je veux ajouter des noms d’utilisateur en masse (pour créer des utilisateurs fictifs initiaux afin de créer des publications).
J’ai donc essayé de créer un fichier rake, de le charger puis de l’exécuter. Mais je n’ai eu aucun succès. Le fichier rake n’est même pas chargé parfois, et quand j’utilise une autre méthode, il est chargé puis une erreur est générée « Je ne sais pas comment créer… » générée par rails c (je ne me souviens même pas du message d’erreur car j’ai essayé mille méthodes différentes pendant des heures pour y parvenir sans succès).
Ce que j’ai fait Création du fichier users.rake
cd /var/www/discourse
mkdir -p lib/tasks
touch lib/tasks/users.rake
Édition avec nano
cd /var/www/discourse/lib/tasks
sudo nano users.rake
Et j’ai ensuite collé le code suivant dans l’éditeur et sauvegardé
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
Chargé dans rails c et chargé dans les tâches
rails console
load 'lib/tasks/users.rake'
exit
Puis j’ai essayé de créer les utilisateurs
./launcher enter app
rake users:create["username1,username2", "password", "domain.com"]
Existe-t-il une autre méthode que je peux essayer via le terminal sans utiliser de choses tierces.
Votre méthode remplira simplement le site de quelques utilisateurs et données aléatoires, ce que je ne veux pas. Et je ne veux pas d’un site en ligne simulé, je peux l’héberger localement si je le souhaite.
Ceci est pour un environnement de production. Les utilisateurs fictifs auront en fait des sujets significatifs. Le but n’est pas de présenter un site vide au public.
Alors, merci de me faire connaître une solution liée à la question que j’ai mentionnée.
J’ai juste besoin d’insérer des utilisateurs (j’ai la liste des noms des utilisateurs) dans la base de données principale de Discourse.
J’ai modifié le code, mais le discours de production dans le conteneur Docker, j’ai créé un fichier rake avec touch et l’ai édité dans nano, puis je suis entré dans l’application avec ./launcher enter app, puis je suis entré dans rails et j’ai vérifié rake -T et le fichier rake n’est pas chargé. C’est ma principale préoccupation. Je ne peux même pas tester le fichier en production.
Cependant, en localhost, il n’y a pas de problème, j’ai juste copié et collé le fichier dans lib/tasks et cela fonctionne bien. Ce Docker et ce conteneur Docker sont une plaie quand vous avez besoin d’accéder directement aux choses. Et je ne peux même pas comprendre pourquoi il n’est pas automatiquement chargé dans la liste des tâches rake.
Je suis donc toujours bloqué en production car le fichier rake n’est pas automatiquement chargé, je ne peux donc pas exécuter la commande.
Votre site ne me soutiendra pas si je n’utilise pas Docker, sinon j’aurais été plus qu’heureux de supprimer Docker et d’héberger le site directement. Cela rendrait la vie beaucoup plus facile.
Le problème est que lorsque la sauvegarde locale est téléchargée sur le site en direct, elle remplacera tout le contenu que j’ai créé sur le site en direct. J’ai une instance locale, mais quelqu’un sur ce forum m’a suggéré d’utiliser le site en direct pour le développement. Je développe donc actuellement sur le site en direct (il n’est cependant pas encore officiellement public).
Et j’ai mis le fichier dans lib/tasks, l’instance locale fonctionne, pas l’instance en direct. J’essaierai également lib/rake.
Je pense que vous ne devriez pas développer en rails ou en ember sur une installation standard, mais j’importe régulièrement dans un conteneur de production. Puisqu’il ne s’agit que d’une tâche de type rake, vous n’avez même pas besoin de redémarrer le serveur pour que les changements prennent effet.
Comme ce n’est pas public, cela devrait être sûr de revenir à une sauvegarde si quelque chose tourne mal. C’est probablement là que je le ferais.
Vous pourriez sauvegarder le site en production et le restaurer sur le site de développement, faire le travail, puis sauvegarder/restaurer à nouveau sur le site en production.