#概要
Railsでタスク管理アプリケーションを作成していました。
予め本番環境にユーザー情報を登録しておきたいと考え、seedしようとしたところエラーが出たので、エラーの原因と解決方法をまとめました。
環境
・Ruby 2.5.1
・Rails 5.2.1
・DB postgresql
・heroku
##エラー内容
seed.rbに以下のユーザーのデータを記述
User.create!(
name: 'test',
email: 'test@example.com',
admin: false,
password: 'password',
password_confirmation: 'password'
)
User.create!(
name: 'admin',
email: 'admin@example.com',
admin: true,
password: 'password',
password_confirmation: 'password'
)
ターミナルで
rake db:seed RAILS_ENV=production
と実行したところ
rake aborted!
ActiveRecord::NoDatabaseError ~~~
Caused by:
PG::ConnectionBad: ~~~
と表示されました。
DBの変更が反映されていないのかと考え、heroku run rake db:migrateを実行しましたが変化はなくここは問題なし。
本番環境だけ反映させるため、RAILS_ENV=productionと記述したところが間違っているのかと思い、色々試しましたがうまくいきませんでした。
##解決方法
以下のコマンドで解決しました。
heroku run rake db:seed
Running rake db:seed on ⬢ sample_app... up, run.0000 (Free)
~~
結論としては、herokuの場合はherokuの仕様に沿ったコマンドを実行しなければならないと言うことです。
AWSでデプロイしている場合であれば、rake db:seed RAILS_ENV=productionで問題ないと思われます。
##まとめ
初めてherokuを利用すると、AWSでデプロイする時とは異なる点が多く、またターミナルからgitを操作することも必要になってきます。
ただ、エラーを解消しながら進めることで、herokuやgitへの理解がエラー解決の過程で深まっていくので、一度herokuでアプリケーションをデプロイしてみると勉強になると思います。