Skip to content

Render.comへRailsアプリケーションをデプロイする2025年版ガイド

はじめに

かつてRailsアプリケーションのホスティングといえばHerokuが第一の選択肢でしたが、無料プランの廃止や価格改定を経て、開発者たちは新たなPaaS(Platform as a Service)を模索するようになりました。その中で、現在最も有力なHeroku代替サービスの一つとして注目を集めているのがRenderです。

Renderは、モダンなWebアプリケーションのデプロイとスケーリングを非常に簡単に行えるように設計されたクラウドプラットフォームです。Dockerコンテナのネイティブサポート、予測可能な料金体系、そして直感的なUI/UXを特徴とし、個人開発からスタートアップ、大企業のプロジェクトまで幅広く対応します。

この記事では、2025年現在のベストプラクティスに基づき、Rails 7アプリケーションをRenderにデプロイするためのステップ・バイ・ステップガイドを提供します。

Renderを選ぶ理由

  • 予測可能な料金: HerokuのDynoとは異なり、インスタンスタイプ(CPU/RAM)に基づいた固定月額料金です。転送量に応じた課金はありますが、基本的な利用では非常にコストパフォーマンスが高いです。
  • Dockerネイティブ: render.yamlというIaC (Infrastructure as Code) ファイル、またはDockerfileを使って、インフラ構成をコードで管理できます。これにより、環境の再現性が高まります。
  • フルマネージドサービス: PostgreSQL, Redis, Cronジョブなど、Webアプリケーションに必要なバックエンドサービスがすべてRender上で完結します。
  • 自動デプロイ: GitHub/GitLabリポジトリと連携し、指定したブランチにプッシュされると自動でビルドとデプロイが実行されます。
  • プレビュー環境: プルリクエスト(PR)ごとに、本番環境とは完全に分離されたプレビュー環境を自動で構築できます。これにより、マージ前に変更を安全に確認できます。

デプロイ準備

デプロイを始める前に、Railsアプリケーション側でいくつか設定が必要です。

1. render.yamlの作成

Renderは、リポジトリのルートにあるrender.yamlファイルに基づいてインフラを自動でプロビジョニングします。このファイルを作成するのが最も推奨される方法です。

yaml
# render.yaml
services:
  # Rails Webサーバー
  - type: web
    name: my-rails-app
    env: ruby
    buildCommand: "./bin/render-build.sh"
    startCommand: "bundle exec puma -C config/puma.rb"
    envVars:
      - key: DATABASE_URL
        fromDatabase:
          name: my-rails-db
          property: connectionString
      - key: REDIS_URL
        fromService:
          type: redis
          name: my-rails-redis
          property: connectionString
      - key: RAILS_MASTER_KEY
        sync: false # Renderのダッシュボードで手動設定

  # PostgreSQLデータベース
  - type: psql
    name: my-rails-db
    plan: free # or starter, standard, etc.
    # version: "14" # 必要に応じて指定

  # Redis
  - type: redis
    name: my-rails-redis
    plan: free # or starter, etc.

2. ビルドスクリプトの作成

render.yamlの中で参照しているビルドスクリプト./bin/render-build.shを作成します。このスクリプトは、デプロイ時にRenderの環境で実行されます。

bash
#!/usr/bin/env bash
# exit on error
set -o errexit

# GemとJavaScriptの依存関係をインストール
bundle install
yarn install

# アセットをプリコンパイル
bundle exec rails assets:precompile

# データベースのマイグレーションを実行
bundle exec rails db:migrate

作成したスクリプトに実行権限を与えます。

bash
chmod +x bin/render-build.sh

3. PumaとPostgreSQLの設定

  • Puma: 本番環境でPumaが正しく動作するように、config/puma.rbが適切に設定されていることを確認します。特に、workersthreadsの数は、Renderで選択するインスタンスプランに合わせて調整することが推奨されます。
  • PostgreSQL: Gemfilepg gemが含まれていることを確認します。
  • database.yml: RenderはDATABASE_URL環境変数でデータベース接続情報を提供するため、config/database.ymlは以下のようにシンプルに設定するのが一般的です。
    yaml
    production:
      adapter: postgresql
      encoding: unicode
      pool: 5
      url: <%= ENV['DATABASE_URL'] %>

Renderでのデプロイ手順

  1. Renderにサインアップ: GitHubまたはGitLabアカウントでRenderにサインアップします。

  2. Blueprintの作成: Renderダッシュボードで、「New」→「Blueprint」を選択します。

  3. リポジトリの連携: デプロイしたいRailsアプリケーションのGitHub/GitLabリポジトリを選択し、接続します。

  4. render.yamlの適用: Renderが自動的にリポジトリ内のrender.yamlを検出し、作成されるサービス(Webサーバー、データベース、Redis)の一覧を表示します。「Apply」をクリックします。

  5. 環境変数の設定: RAILS_MASTER_KEYのように、render.yamlsync: falseと指定した環境変数を手動で設定します。credentials.yml.encを解読するためのRAILS_MASTER_KEYは、ローカルのconfig/master.keyの内容をコピー&ペーストします。

  6. デプロイの開始: 「Create」ボタンを押すと、最初のデプロイが開始されます。render-build.shスクリプトが実行され、完了するとアプリケーションが公開されます。

デプロイの進捗は、Renderのダッシュボードでリアルタイムに確認できます。ビルドが成功し、サービスが「Live」になれば完了です!

デプロイ後の運用

  • 自動デプロイ: render.yamlが配置されているブランチ(通常はmain)にプッシュすると、新しいデプロイが自動的にトリガーされます。
  • カスタムドメイン: ダッシュボードから簡単にカスタムドメインを設定し、SSL証明書を無料で自動発行できます。
  • ログの確認: リアルタイムのログストリーミング機能で、アプリケーションのログを簡単に確認できます。
  • スケールアップ: トラフィックが増加したら、ダッシュボードで数クリックするだけでWebサーバーやデータベースのプランを簡単にスケールアップできます。

まとめ

Renderとrender.yamlを使ったIaCアプローチは、Railsアプリケーションのデプロイと管理を劇的に簡素化し、再現性の高いものにしてくれます。Herokuの使いやすさを継承しつつ、よりモダンで柔軟な機能を提供してくれるRenderは、2025年現在、Rails開発者にとって最も魅力的なPaaSの一つと言えるでしょう。

インフラの管理に頭を悩ませることなく、アプリケーション開発そのものに集中するために、ぜひRenderの活用を検討してみてください。

AI が自動生成した技術記事をまとめたテックブログ