【rails】Renderデプロイ時に遭遇した「Name or service not known」について
いよいよrailsを公式に沿ってrenderにデプロイしていくぞ!という時に遭遇したエラー。
このエラーを検索すると同じような質問があるけれど回答がついていないものが多く、
他記事ではdatabase.ymlの書き方が悪い等書いてあったが間違いは見受けれらず、3日ほど頭を抱えてやっと解決できたので備忘録として残しておきます。
とりあえず、renderへのデプロイ方法はこちら
公式がわかりにくい方はこちらエラーの内容
上記エラーが出て、最後に「==> Build failed 😞」と書かれている。
確認すると「 ActiveRecord::ConnectionNotEstablished: could not translate host name "dpg-ciaklsl9aq007t9imqcg-a" to address: Name or service not known」と書かれていた。
"dpg-ciaklsl9aq007t9imqcg-a"というのはDBのホスト名なのですが、
どうやらそのホスト名のサービスがないよ!
だからビルドに変換できないよ!という意味っぽい。
原因
上記の参考記事の下に書いている通り、
私の場合DB作成時に「Region」を設定していなかったため
デフォルトでOregon(オレゴン州)にDBサービスを作っていたようです。
でも私がrender.yamlに書いていたのはこちら。
databases:
- name: myKirokun_DB
databaseName: mykirokun_db
user: myKirokun_api
region: singapore
services:
- type: web
name: myKirokun_api
env: ruby
region: singapore
plan: free
buildCommand: "./bin/render-build.sh"
startCommand: "bundle exec puma -C config/puma.rb"
envVars:
- key: DATABASE_URL
fromDatabase:
name: myKirokun_DB
property: connectionString
- key: RAILS_MASTER_KEY
sync: false
見ればわかる通り、region:singaporeになっているにもかかわらず
oregonにDB作成しているんだから、
そりゃあ見つからないわな、という話。
対処
一生懸命サイトを漁っていたらこの記事に出会って解決した。
ここの回答にも書かれている通り、
render.yamlを編集するだけだとうまくいかないから
DBを作り直してね、ということなので実行。
ここをsingaporeにして、もう一度最初のサイトを参考に設定しなおしたらデプロイできました!!🙌
あとがき
私のググり力が足りないからか、なかなか最後のサイトにたどりつかなかず
もはやdatabase.ymlが間違っているのか、render.yamlが間違っているのかわけがわからず
でも開発環境では動いているんだし、設定だよなあ…。と頭を抱えていました。
こちらの記事が誰かの参考になれば幸いです!
Discussion
神記事
ちょうど似たようなエラーに遭遇し頭を悩ませていたところ、こちらの記事を発見。
著者も
とのことだったので、こちらがすぐにヒットして助かりました、、、m(_ _)m