LoginSignup
1
1

More than 1 year has passed since last update.

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

Posted at

状況

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

1
1
0

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
  3. You can use dark theme
What you can do with signing up
1
1