【2025年版】Render.comとNeonでRailsアプリを無料デプロイする方法


今回は、Ruby on Rails アプリケーションを Render.com にデプロイする方法を解説します。

実際にデプロイしたアプリケーションは以下の URL からアクセスできます。

https://techlog-app-ozm6.onrender.com/

（後述しますが、無料プランのため、アクセスする際に少し待たされることがあります）

## Gemfile を書き換えて postgres に対応させる

まずは、Rails アプリケーションの Gemfile を書き換えて、PostgreSQL に対応させましょう。

デフォルトでは `SQLite3` というデータベースが使われていますが、Render.com では `PostgreSQL` が使われているため、Gemfile を書き換える必要があります。

Gemfile を開いて、以下の 3 行を末尾に追加します。

```
group :production do
  gem 'pg'
end
```

これで、本番環境では `pg` という Gem が使われ、`PostgreSQL` が使われるようになります。

なお、`group :production do` という記述は、本番環境でのみ有効になる設定を書くための記述です。

また、元々使っていた `sqlite3` は、開発環境とテスト環境でだけ使われるようになります。

そのため、上の方に書かれていた `gem 'sqlite3'` は、`group :development, :test do` という記述の中に移動させてください。

（バージョン情報は一例ですので、元々の記述をそのまま移動させてください）

```
# gem 'sqlite3', '>= 2.1' 削除

# ...略

group :development, :test do
  # ...略

  gem 'sqlite3', '>= 2.1'
end
```

では、Gemfile を書き換えたら、以下のコマンドを実行してください。

```
bundle install
```

では、変更を一度コミットしておきましょう。

```
$ git add .
$ git commit -m "PostgreSQL を使うための設定"
$ git push origin main
```

ちなみに、`sqlite3` は本来のデータベースの設定に戻すため、以下のように書き換えておきましょう。

```
group :development, :test do
  gem 'sqlite3'
end
```

## config/database.yml を書き換える

次に、`config/database.yml` を書き換えましょう。

※すでに同様の変更を行っている場合は、この手順は不要です。

このファイルは、データベースの接続情報を記述するファイルです。

ただし、データベースの接続情報をソースコード内に直接書くことはセキュリティ上のリスクがあるため、環境変数として設定します。

環境変数とは、アプリケーションが動作するサーバに設定される変数のことです。

これにより、アプリケーションのコードからは環境変数を参照することで、データベースの接続情報を取得することができます。

`production` という欄を一度全て消し、以下のように書き換えてください。

```yml
production:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>
```

これで、本番環境では `DATABASE_URL` という環境変数を使ってデータベースに接続するようになります。

では、変更を一度コミットしておきましょう。

```
$ git add .
$ git commit -m "データベースの接続情報を環境変数に設定"
$ git push origin main
```

これでソースコード側の準備は完了です。

では次に、Neon でデータベースを作成し、Render.com に接続情報を設定していきましょう。

## Neon アカウント作成

Neon というデータベース管理サービスを使って、データベースを作成します。

無料プランでデータベースを作成することができますので、こちらを利用します。

https://neon.tech/ にアクセスし、アカウントを作成します。

右上の [Sign Up] を選択します。

![NeonのSignUpボタンが見える画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/10e41cd6-9de8-4da4-a44c-a78de84e29dc.png)

GitHub アカウントなどで登録

![Neonのアカウント登録画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/da8b0c02-9a2e-4295-aaa7-adb8e2aed283.png)

## データベース作成

ダッシュボードに遷移するので、[Create project] を選択します。

![スクリーンショット 2025-03-15 17.03.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/7badb828-3e7b-453f-b9bb-cbd9ab3b65ed.png)

すると、データベースに関する設定を求められるので、以下のように設定します。

- Project name: techlog-db
- PostgreSQL version: デフォルトのまま
- Database name: techlog-db
- Cloud Service Provider: AWS
- RegionL: AWS Asia Pacific 1 (Singapore)

![スクリーンショット 2025-03-15 17.10.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/ce171a40-96b7-400c-86a0-58354612872e.png)

設定できたら [Create] を選択します。

すると、データベースが作成されます。

次は、このデータベースに Render.com から接続するための URL を入手しましょう。

画面右上の [Connect] を選択します。

![スクリーンショット 2025-03-15 17.11.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/100e7fb2-51f8-4200-9ec5-a082164a3753.png)

すると、データベースに接続するための情報が表示されます。

`Connection string` という欄には、一部マスクされた URL が表示されています。

[Copy snippet] を選択し、クリップボードにコピーします。

![スクリーンショット 2025-03-15 17.11.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/ac0a99e5-fb2c-4012-8906-8bd3efd0001b.png)

コピーできたので、メモ帳などに貼り付けてメモしておきましょう。

これを、のちに Render.com に設定するための環境変数として使います。

## Render.com アカウント作成

ではまず、Render.com にアカウントを作成しましょう。

https://dashboard.render.com/register

Render.com では、GitHub アカウントを使って登録することができます。

GitHub アカウントで登録すると、GitHub リポジトリと Render.com をスムーズに連携させることができるので、GitHub アカウントで登録することをおすすめします。

![スクリーンショット 2025-03-15 16.57.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/2d72291e-ca57-4105-aded-8904fbc5627e.png)

## Web Service 作成

では、Render.com で Web Service を作成しましょう。

今から作る Web Service というのは、Ruby on Rails アプリケーションを動かすためのサーバです。

ダッシュボード右上から [+ New] > [Web Service] を選択します。

![スクリーンショット 2025-03-15 16.55.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/d71b67e4-3fd1-4c4e-b6cc-8de052c73e23.png)

次に、デプロイしたい GitHub リポジトリと Render.com を連携させます。

今回は [Git Provider] > [techlog-app] リポジトリを選択すると、自動的に連携されます。

![スクリーンショット 2025-03-15 16.56.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/c4cb2eb2-f49c-4d0c-9212-bd95eaa07198.png)

なお、GitHub アカウント以外で Render.com アカウントを登録した場合は、追加の認証が必要になりますので、画面の指示にしたがって認証を進めてください。

## デプロイの設定

では、デプロイの設定を行いましょう。

デプロイとは、アプリケーションをサーバにアップロードして、公開することです。

たまに項目名などが変わる可能性もありますが、以下のように設定します。

- Name: techlog-app（デフォルトのまま）
- Language: Ruby
- Branch: main（デフォルトのまま）
- Region: Singapore
- Instance Type: Free

![スクリーンショット 2025-03-15 17.00.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/c8e22f70-ab6d-4b3d-b487-56838762d752.png)

![スクリーンショット 2025-03-15 17.00.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/3140f0a9-c179-4d0e-9021-b6eeccfee3bd.png)

ここで、Instance Type は、無料プランを選択しています。

無料プランは、誰も使っていないときにアプリを一時停止するため、アクセスするときに少し待たされることがあります。

そのため、少しでもポートフォリオとしてのイメージを高めたい場合は、有料プランを選択することをおすすめします。

## Build Command の設定

また、デプロイの設定を行う画面の下部には、Build Command という項目があります。

![スクリーンショット 2025-03-15 17.46.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/6b25f6e0-a21f-4374-ba0a-cf08faa3df68.png)

デフォルトでは、以下のようになっているはずです。

```bash
bundle install; bundle exec rake assets:precompile; bundle exec rake assets:clean;
```

これだけですとマイグレーション、つまりテーブルの作成・変更が行われません。

[Build Command] > [Edit] を押して編集モードにしつつ、末尾に以下をそのままコピーして貼り付けてください。

```bash
bundle exec rails db:create RAILS_ENV=production; bundle exec rails db:schema:load RAILS_ENV=production;bundle exec rails db:migrate RAILS_ENV=production;
```

少し長いですが、全体としては以下のようになっているはずです。

```bash
bundle install; bundle exec rake assets:precompile; bundle exec rake assets:clean; bundle exec rails db:create RAILS_ENV=production; bundle exec rails db:schema:load RAILS_ENV=production;bundle exec rails db:migrate RAILS_ENV=production;
```

## 環境変数の設定（データベースの接続情報）

では次に、Render.com にデータベースの接続情報を設定しましょう。

先ほど、Neon から [Copy snippet] でコピーした情報を使います。

Render.com のダッシュボード上では、左側のメニューから [Environment Variables] を選択します。

そして [Environment Variables] > [+ Add Environment Variable] と選択し、`DATABASE_URL` という名前で、先ほどコピーした URL を貼り付けます。

（右側のマスクされている部分に入力しています。

![スクリーンショット 2025-03-15 17.16.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/1830aa7d-c7ba-4f8a-aebe-b10c02402fa6.png)

なお、`RAILS_MASTER_KEY` という 1 行は今回は使いませんので、右側のゴミ箱アイコンをクリックして削除してください。

## 環境変数の設定（SECRET_KEY_BASE）

次に、`SECRET_KEY_BASE` という環境変数を設定します。

この環境変数は、Rails アプリケーションがセッション情報を暗号化するために必要なキーです。

ローカルで Rails プロジェクトをターミナルで開き、以下のコマンドを実行してください。

```bash
bin/rails secret
```

値が表示されますので、それをコピーしてください。

そして [Environment Variables] > [+ Add Environment Variable] を選択し、`SECRET_KEY_BASE` という名前で、先ほどコピーした値を貼り付けます。

![スクリーンショット 2025-03-16 10.12.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/9527dc64-0a0d-4d98-bcf9-178ab92bae0d.png)

これで、環境変数の設定は完了です。

## デプロイ

では、設定が完了したら、デプロイを行いましょう。

ダッシュボード上の [Deploy Web Service] というボタンを押してください。

![スクリーンショット 2025-03-15 17.17.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/e4932683-15a5-4977-a0c6-dd2e69d04479.png)

すると、最新のコミットに基づきデプロイがはじまります。

![スクリーンショット 2025-03-15 17.25.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/8d70aa7d-0753-4171-8f10-42dfbbc28b14.png)

デプロイ時のログが表示されますので、しばらく待ちましょう。

この時、エラーが出た場合は、ログを確認して原因を特定します。

しばらくするとデプロイが完了しますので、上の方に表示されている URL からアクセスできます。

https://techlog-app-ozm6.onrender.com

![スクリーンショット 2025-03-15 17.50.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/7550add7-35cc-4d8f-a149-748567d5b3da.png)

![スクリーンショット 2025-03-15 17.51.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/00042e49-e3e6-43bc-af40-f988a1e43584.png)

この URL を転職先などに伝えれば、ご自身のポートフォリオとして公開することができます。

## Rails アプリに変更を加えたら？

コミットして GitHub にプッシュすると、Render.com で自動的にデプロイが走ります。

デプロイ状況は、ダッシュボードの [Events] から状況が見られます。

![スクリーンショット 2025-03-15 17.49.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/621f9623-8e32-4bbd-8f9e-481e848031e6.png)

デプロイ完了後、青いチェックマークがついていれば OK です。

![スクリーンショット 2025-03-15 17.50.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/d2441b59-c1cb-42a6-b01b-2ae3bd07e6b1.png)

## デプロイに失敗した場合は？

[Events] からデプロイ時のログを見られるので、確認してみましょう。

![スクリーンショット 2025-03-15 17.53.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/90a759f7-11fd-4a9a-92f4-9167b30cab4d.png)

理由は多種多様なのでエラーメッセージを特定するしかありませんが、Google 検索したり、ChatGPT に聞くことで解決できるかもしれません。

## デプロイは出来たけどアプリにエラーが出たら？

画面左側の [MONITOR] > [Logs] から、アプリのログを見てみましょう。

ターミナルで `rails s` または `bin/dev` コマンドでサーバを動かしていたときと同じように、ログが出てきます。

![スクリーンショット 2025-03-15 17.55.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/b4be8e8b-5f96-4152-9f56-e1ebdf3fc2c7.png)

環境変数などに問題がなければ、エラーの原因はアプリケーションのコードにある可能性が高いです。

その場合は、ローカル（パソコン）上でエラーが再現するかどうかを確認し、原因を特定して修正しましょう。

## Render.com と Neon での無料プランについて注意点

Render.com でデータベースまで作成すると、数ヶ月でデータベースを使えなくなってしまいます。

そのため、データベースは Neon で作成し、Render.com でアプリケーションをデプロイするという方法を採用しました。

しかし、Ruby on Rails を無料でデプロイする方法は頻繁に変わりうるため、その点にご留意いただけますと幸いです。

例えば、Render.com や Neon の無料プランが廃止されたり、仕様が変更されたりする可能性があります。

私も定期的に確認し、情報をアップデートできるよう努めます！！！