33
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

herokuで本番環境にデータ投入

Posted at

#概要
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でアプリケーションをデプロイしてみると勉強になると思います。

33
32
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
33
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?