投稿を作成するための初期ダミーユーザーを作成するために、ユーザー名を一括で追加したいと考えています。
そこで、rakeファイルを作成してロードし、実行しようとしましたが、成功しませんでした。rakeファイルがロードされないこともあり、別の方法を使用するとロードされてから「作成方法がわかりません…」というエラーが rails c によってスローされます(成功せずに何時間も試したため、エラーメッセージを覚えていません)。
私がやったこと users.rake ファイルを作成しました
cd /var/www/discourse
mkdir -p lib/tasks
touch lib/tasks/users.rake
nano で編集しました
cd /var/www/discourse/lib/tasks
sudo nano users.rake
そして、以下のコードをエディタに貼り付けて保存しました
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
rails c にロードし、タスクにロードしました
rails console
load 'lib/tasks/users.rake'
exit
その後、ユーザーを作成しようとしました
./launcher enter app
rake users:create["username1,username2", "password", "domain.com"]
コードを修正しましたが、Dockerコンテナ内の本番環境のディスコースで、touchコマンドでrakeファイルを作成し、nanoで編集してから./launcher enter appでアプリに入り、railsに入ってrake -Tを確認したところ、rakeファイルがロードされません。これが私の主な懸念事項です。本番環境でファイルを実行してテストすることすらできません。