search
LoginSignup
0

More than 1 year has passed since last update.

posted at

seeds.rbの情報を本番環境に反映させたくない時

状況

ローカル環境を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にて作成
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を明示する必要があると学びました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0