Voglio aggiungere nomi utente in blocco (per creare utenti fittizi iniziali per creare post).
Quindi ho provato a creare un file rake, caricarlo ed eseguirlo. Ma non ho avuto successo. Il file rake a volte non viene nemmeno caricato e quando uso un altro metodo viene caricato e poi viene generato un errore “Non so come creare…” errore generato da rails c (non riesco nemmeno a ricordare il messaggio di errore poiché ho provato mille metodi diversi per ore per farlo funzionare senza successo)
Cosa ho fatto Creata la cartella users.rake
cd /var/www/discourse
mkdir -p lib/tasks
touch lib/tasks/users.rake
Modifica con nano
cd /var/www/discourse/lib/tasks
sudo nano users.rake
E poi ho incollato il seguente codice nell’editor e salvato
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
Caricato in rails c e caricato nei task
rails console
load 'lib/tasks/users.rake'
exit
Poi ho provato a creare gli utenti
./launcher enter app
rake users:create["username1,username2", "password", "domain.com"]
C’è qualche altro metodo che posso provare tramite il terminale senza usare cose di terze parti.
Il tuo metodo riempirà semplicemente il sito con alcuni utenti e dati casuali, cosa che non desidero. E non voglio un sito online di prova, posso semplicemente ospitarlo localmente se voglio.
Questo è per un ambiente di produzione. Gli utenti fittizi avranno in realtà alcuni argomenti significativi. Lo scopo di questo non è presentare un sito vuoto al pubblico.
Quindi, per favore, fammi sapere una soluzione relativa alla domanda che ho menzionato.
Ho solo bisogno di inserire utenti (ho l’elenco dei nomi degli utenti) nel database principale di Discourse.
Ho modificato il codice, ma il discourse di produzione nel container Docker, ho creato un file rake con touch e l’ho modificato in nano, poi sono entrato nell’app con ./launcher enter app, poi sono entrato in rails e ho controllato rake -T e il file rake non viene caricato. Questa è la mia preoccupazione principale. Non posso nemmeno testare il file in produzione.
Tuttavia, in localhost, non ci sono problemi, ho semplicemente copiato e incollato il file in lib/tasks e funziona bene. Questo Docker e il container Docker sono un tormento quando è necessario accedere direttamente alle cose. E non riesco nemmeno a capire perché non venga caricato automaticamente nell’elenco dei task rake.
Quindi, sono ancora bloccato in produzione poiché il file rake non viene caricato automaticamente, quindi non posso eseguire il comando.
Il tuo sito non mi supporterà se non uso Docker, altrimenti sarei stato più che felice di rimuovere Docker e ospitare il sito direttamente. Questo renderebbe la vita molto più facile.
Il problema è che quando il backup locale viene caricato sul sito live, sostituirà tutti i contenuti che ho creato sul sito live. Ho un’istanza locale, ma qualcuno in questo forum mi ha suggerito di usare il sito live per lo sviluppo. Quindi, ora sto sviluppando sul sito live (anche se non è ancora ufficialmente pubblico).
E ho messo il file in lib/tasks, l’istanza locale funziona, non quella live. Proverò anche lib/rake.
Penso che non dovresti sviluppare rails o ember su un’installazione standard, ma eseguo regolarmente importazioni in un container di produzione. Dato che si tratta solo di un’attività rake, non è nemmeno necessario riavviare il server affinché le modifiche abbiano effetto.
Dato che non è pubblico, dovrebbe essere sicuro ripristinare un backup se qualcosa va storto. Probabilmente è lì che lo farei.
Potresti eseguire il backup del sito live e ripristinarlo sul sito di sviluppo, fare il lavoro e poi eseguire nuovamente il backup/ripristino sul sito live.