状況
ローカル環境をCloud9で構築、EC2環境にアプリをデプロイしている状況です。
そこでseeds.rbに記載した情報を本番環境に反映させたくなかったので、その対処法です。
seeds.rbには管理者ユーザーのログイン情報を記載しており、GitHubにその情報を載せるとセキュリティ上良くないので、GitHunbへのpushは行っていません。
作業
まず結論としては、seeds.rbの内容を反映させるためのコマンドを「rake db:seed RAILS_ENV=production」
ではなく、「rake db:seed」としていたことです。
では順番にエラー遭遇と上記コマンド入力までの流れをみていきます。
今回GitHubにseedsファイルの情報は載せていないので、本番環境上で追記してあげます。
アプリ名 $ vi db/seeds.rb
#なければtouch db/seeds.rbにて作成
User.create!(
name: "管理者",
email: "admin@example.com",
password: "admin",
password_confirmation: "admin",
admin: true)
次に設定を反映させます。
アプリ名 $ rake db:seed
これだと失敗します。
本番環境でログインしてみますが、ログインできません。
きちんとデータ保存できているのか確認するために、一度コンソールを開いてみます。
アプリ名 $ rails c
[1] pry(main)> User.all
User Load (0.3ms) SELECT `users`.* FROM `users`
=> [#<User:0x0000000005adab60 id: 1, name: "管理者", email: "admin@example.com", password_digest: "[FILTERED]", created_at: Tue, 25 May 2021 14:33:34.000000000 UTC +00:00, updated_at: Tue, 25 May 2021 14:33:34.000000000 UTC +00:00, admin: true>,
あれ、保存されている…?
タイプミスがあったのかと思い再度ログインを試みるが、全くログインできる気配無し…。
調べたところ「rake db:seed RAILS_ENV=production」にて反映させる必要があるとのこと。
という訳で入力してみます。
アプリ名 $ rake db:seed RAILS_ENV=production
これで無事反映されて、ログインできるようになりました。
ユーザー情報が保存されていた為理由が分からず焦ってしまいましたが、本番環境にしっかりと反映させるためにRAILS_ENV=productionを明示する必要があると学びました。