ЯoomeR

プログラミング~実装とエラー解決と、時々、AI~

Renderにデプロイする[Rails]

Step1

Renderのアカウント作成

https://render.com/

Step2

アプリケーションの作成 001_New_WebService New>Web Service

Githubとアカウント連携することで、任意のリポジトリをデプロイすることが可能になる。

変更するのは以下の3点

  • Name:任意の名前を指定する

  • Environment:Railsの場合はRubyを選択

  • Region:距離的に近いシンガポール(singapore)を選択

Step3

環境変数の登録 002_Environment

Environment> Environment Variables

にmaster.keyの中身を登録する。

「Key」に「RAILS_MASTER_KEY」と入力し、Valueにmaster.keyの中身を記述する。

Step4

DBの作成 003_New_PostgreSQL

New>PostgreSQL

Nameを設定する。

Database名やUser名は入力しないと適当に決められてしまうため、気になる場合は自分で設定しておく。

Step5

コードの編集

config/puma.rbの書き換え

- # preload_app!
+ preload_app!

- # workers ENV.fetch("WEB_CONCURRENCY") { 2 }
+ workers ENV.fetch("WEB_CONCURRENCY") { 2 }
- config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
+ 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
yarn install
yarn build 
bundle exec rake assets:precompile
bundle exec ridgepole -c config/database.yml -E production --apply -f db/schemas/Schemafile 

また、ターミナルで以下を実行して権限を付与する

chmod a+x bin/render-build.sh

アプリケーション直下に「render.yaml」を作成し、中身は以下のようにする

databases:
  - name: 作成したDBのNameを入力する
    databaseName: 作成したDBのDatabaseNameを入力する
    user: 作成したDBのUserを入力する
    region: singapore

services:
  - type: web
    name: 作成したDBのNameを入力する
    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: 作成したDBのNameを入力する
          property: connectionString
      - key: RAILS_MASTER_KEY
        sync: false

5か所、自身で作成したDBに基づき編集する箇所があるので注意する事!

あとは変更点をコミット&プッシュすると自動的にデプロイが行われる。

ちなみに

15分間アクセスがないと停止する。

再度アクセスした際は、起動に30秒~1分程度を要する。

「ずっと使うわけじゃないけど、開いたときにすぐ使いたいな」という場合はcron-job.orbなどを利用するのも手である。