LoginSignup
8
4

More than 1 year has passed since last update.

【Rails】Render本番環境DBに初期データを投入する方法

Posted at

概要

Renderを使用してオリアプを本番環境へデプロイをする時に、本番環境のPostgreSQLデータベースに初期データを投入する方法が分からず、解決までに時間を掛けすぎてしまった為、解決方法をここに纏めます。
本番環境に投入するデータは都道府県データです。

環境

  • Rails 6.0.6.1
  • ruby 2.6.5
  • PostgreSQL
  • Render

初めに試したこと

seeds.rbに都道府県データを作成後、

seeds.rb
History.create(name: '北海道')
History.create(name: '青森県')
History.create(name: '岩手県')
History.create(name: '宮城県')
History.create(name: '秋田県')
#以下省略

上記データを本番環境に投入する為に、下記コマンドをターミナル上で実行。

rake db:seed RAILS_ENV=production

すると、「データベースにアクセスするためのソケットが見つからず接続できない、サーバーはローカルで実行されそのソケットでの接続を許可していますか?」とエラーメッセージが出現。

PG: :ConnectionBad: connection to server on socket "/tmp/. s.PGSQL.5432» failed: No such file or directory
     Is the server running locally and accepting connections on that socket?

このエラーを解決するために、ググりまくっていたところ、下記記事を発見。
https://qiita.com/show1107/items/5dbdac581d561909cf84
記事はherokuに関する内容でしたが、rails db:seed RAILS_ENV=productionコマンドでは本番環境にデータを投入することは出来ず、RenderもRenderの仕様に沿ったコマンドを実行しなければならないのでは?と考えました。

Renderへ初期データを投入する方法

色々と調べた結果、以下方法でRender本番環境データベースに初期データを投入することが出来ました。

Renderでアプリの新規作成をする際に、Settings内のBuild Commandrender-build.shを指定していました。
スクールのカリキュラムを参考に流れ作業で進めていたので、このファイルが何のためにあるのか全く理解出来ておりませんでしたが、このBuild Commandではデプロイ実行時のコマンドを設定しており、render-build.shを指定することで、render-build.shファイルに記述しているコマンドをデプロイ時に実行してくれるみたいです。

    入力欄	           入力内容
Build Command	./bin/render-build.sh

その為、render-build.shbundle exec rails db:seedを追記し、デプロイしたところ、無事に本番環境に初期データを投入することが出来ました。

render-build.sh
#!/usr/bin/env bash
# exit on error
set -o errexit

bundle install
bundle exec rake assets:precompile
bundle exec rake assets:clean
bundle exec rake db:migrate
bundle exec rails db:seed

備考

Build Commandrender-build.shを指定してコマンドを実行する方法以外にも、Build Commandに実行するコマンドを直接入力して指定する方法でも良いみたいです。

bundle install && yarn install && bundle exec rake assets:precompile && bundle exec rake assets:clean && bundle exec rails webpacker:compile && bundle exec rake db:migrate && bundle exec rails db:seed

参考文献

8
4
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
8
4