初心者SEのつぶやき

初心者SEのつぶやき

【Ruby on Rails】アプリを公開する方法 Render + Neon

これは2024/04/02時点の情報です。

やりたいこと

作成したRailsアプリを無料でデプロイしたい。

利用するサービス

Render.com

webアプリ公開することができるPaas

render.com

Neon

PostgreSQLのデプロイサービス

neon.tech

デプロイ手順

Neonデプロイ

はじめにNeonの方からセットアップする。

  • 公式サイトにアクセスしてFree Tierでアカウント登録を行う。

  • 画面の指示に従ってdatabaseを作成する。

  • DashbordからConnection Detailsを開く。

  • Connection Details内のconnection stringをNode.jsに切り替える。
    その下に出てきた.envタブを選択する。

    Neonの設定画面

  • タブ内にあるPGHOST,PGDATABASE,PGUSER,PGPASSWORDP,ENDPOINT_IDをメモする。
    もしPGPASSWORDが不明の場合、サイドバーのbranchsのRolesから
    リセットパスワードを実行し、再度passwordを発行する。
    ※この内容は秘匿情報なので絶対に他人に公開しないでください

  • メモした内容を元にEDITOR="vi" rails credentials:editコマンドでrails内のconfig/credentials.yml.encに下記内容を追加する。

  neon:
    username: PGUSERの内容
    host: PGHOSTの内容
    database: PGDATABASEの内容
    password: PGPASSWORDの内容
  • config/database.ymlに下記内容を追加する。
  production:
    <<: *default
    host: <%= Rails.application.credentials.neon&.fetch(:host) %>
    database: <%= Rails.application.credentials.neon&.fetch(:database) %>
    username: <%= Rails.application.credentials.neon&.fetch(:username) %>
    password: <%= Rails.application.credentials.neon&.fetch(:password) %>
    ssl_mode: verify_identity
    sslca: "/etc/ssl/certs/ca-certificates.crt"

Renderデプロイ

  • config/puma.rbに下記内容を追加する。
workers ENV.fetch("WEB_CONCURRENCY") { 2 }
preload_app!
  • config/environments/production.rbに下記を記載する。
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? || ENV['RENDER'].present?
  • bin/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
  • 公式サイトでRenderの登録を行う。
  • 登録できたらダッシュボードのヘッダーのnewからWeb Serviceをクリックする。(対象GitHubリポジトリと連携する。)

    renderヘッダー

  • 登録時の内容は下記となる。

項目 入力内容
Branch デプロイしたいブランチ名
Runtime Ruby
Build Command ./bin/render-build.sh
Start Command bundle exec puma -C config/puma.rb
Instance Type Free
  • 画面下部のAdvanced内のAdd Environment Variableconfig/master.keyに記載の文字列をRAILS_MASTER_KEYとして登録する。

  • Create Web Serviceをクリックするとデプロイ開始

  • デプロイ完了し下記画面のURLをクリックするとデプロイしたアプリにアクセスできる。

    render dashbord

    感想

    Renderの記事は多かったが、DBサービスに関してはあまり情報がなく
    苦戦した。
    スタートアップアプリや個人開発だとあまりコストかけたくないかなと思うので、今回の記事が参考になったら幸いです。