0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

React on Railsを用いたRailsアプリのRender.comへのデプロイ

0
Posted at

はじめに

タイトルの通り、
React on Railsを用いたRailsアプリをRender.comへデプロイしました。

本稿執筆時点では、上記アプリのRender.comへのデプロイに関して情報が見つけられず、
デプロイに苦戦しました。そのため、デプロイ手順を共有させていただきます。

誤りや不正確な表現、不要な手順などを見つけましたら、
お手数をおかけしますがご指摘お願いします。

本稿がどなたかのお役に立てば幸いです。

注意事項

本稿において、「React on Rails」とは、
ReactコンポーネントをRailsのView層へ組み込むためのGemを指します。
RailsがReactを内包することで、一体型の開発が可能となります。

一方で、「React on Rails」という言葉は、
フロントエンド側にReact、バックエンド側にRails(APIモード)を用いた分離型の構成
を表現する際にも使われることがあります。

後者は本稿では扱わない構成ですので、ご注意ください。

本稿の対象者

本稿は下記3点全てに該当する方を対象としています。

  1. Webアプリとして、React on Railsを用いたRailsアプリを作成している方
  2. データベースとして、PostgreSQLを使用している方
    ※Render.comにおける推奨データベースがPostgreSQLのため
  3. 上記をRender.comへのデプロイを検討している方
    ※本稿ではFreeプランでのデプロイを前提としています

一方で、注意事項でも申し上げた通り、本稿は下記に該当する方は対象外としています。

  1. フロントエンド側にReact、バックエンド側にRails(APIモード)を用いた構成の
    アプリを開発している方

環境

  • React:19.2.7
  • Ruby:4.0.5
  • Ruby on Rails:8.1.3
  • React on Rails:16.6.0
  • PostgreSQL:18.4

手前味噌ではありますが、実際にデプロイしたWebアプリのリポジトリをご紹介します。
参考になれば幸いです。

デプロイの手順

下記3ファイルを新規作成または編集します。
(1) bin/render-build.sh(Render.comにおけるWebアプリのビルドスクリプト)
(2) render.yaml(Render.comにおけるIaCファイル)
(3) config/database.yml

(1) bin/render-build.shを新規作成
Render.com公式ドキュメントを参考にファイルを新規作成します。

このとき、React on Railsを用いたRailsアプリのデモを参考に、
JavaScriptパッケージ管理ツールによるパッケージ導入手順を追加します。

デモ内ではパッケージ管理ツールとしてyarnが使用されていますが、
本稿ではnpmを使用します。そのため、「npm install」の行を追加します。

また、React on Rails公式ドキュメントを参考に「assets:precompile」の行を編集します。

上記の手順を経て、下記ファイルが作成されます。

bin/render-build.sh
#!/usr/bin/env bash

# Exit on error
set -o errexit

bundle install
npm install                                                          # 追加
RAILS_ENV=production NODE_ENV=production bin/rails assets:precompile # 編集
bin/rails assets:clean

# If you have a paid instance type, we recommend moving
# database migrations like this one from the build command
# to the pre-deploy command:
bin/rails db:migrate

最後に、chmod a+x bin/render-build.shで実行可能権限を付与します。

(2) render.yamlを新規作成
引き続き、上記のRender.com公式ドキュメントを参考にファイルを新規作成します。

Webアプリ名、データベース名が設定できる箇所([ ]で表されている項目)があるので、
任意の名称を入力してください。

render.yaml
services:
  - type: web
    name: [ここにWebアプリ名を入力]
    runtime: ruby
    plan: free
    buildCommand: './bin/render-build.sh'
    # preDeployCommand: "bundle exec rails db:migrate" # preDeployCommand only available on paid instance types
    startCommand: './bin/rails server'
    envVars:
      - key: DATABASE_URL
        fromDatabase:
          name: [ここにデータベース名を入力]
          property: connectionString
      - key: RAILS_MASTER_KEY
        sync: false # You'll provide this value on Blueprint creation
      - key: WEB_CONCURRENCY
        value: 2 # Recommended default
databases:
  - name: [ここにデータベース名を入力]
    plan: free

(3) config/database.ymlを編集
Render.com上でWebアプリとデータベースを接続するために、環境変数DATABASE_URL
を設定します。

config/database.yml
# ...
production:
  primary: &primary_production
    <<: *default
    url: <%= ENV["DATABASE_URL"] %> # 追加
# ...

以上の3ファイルが準備できたら、各々のリポジトリにpushし、
Render.com公式ドキュメントに従い、デプロイします。

暫く待つとデプロイが完了し、作成したWebサービスにアクセス可能となるはずです。

デプロイ手順の説明は以上です。
ここまで読んでいただき、ありがとうございました。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?