0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

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

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

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

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 という欄を一度全て消し、以下のように書き換えてください。

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ボタンが見える画像

GitHub アカウントなどで登録

Neonのアカウント登録画面

データベース作成

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

スクリーンショット 2025-03-15 17.03.16.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

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

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

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

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

スクリーンショット 2025-03-15 17.11.04.png

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

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

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

スクリーンショット 2025-03-15 17.11.47.png

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

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

Render.com アカウント作成

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

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

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

スクリーンショット 2025-03-15 16.57.12.png

Web Service作成

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

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

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

スクリーンショット 2025-03-15 16.55.20.png

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

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

スクリーンショット 2025-03-15 16.56.22.png

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

デプロイの設定

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

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

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

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

スクリーンショット 2025-03-15 17.00.12.png

スクリーンショット 2025-03-15 17.00.33.png

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

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

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

Build Command の設定

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

スクリーンショット 2025-03-15 17.46.38.png

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

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

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

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

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;

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

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

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

環境変数の設定(SECRET_KEY_BASE)

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

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

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

bin/rails secret

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

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

スクリーンショット 2025-03-16 10.12.55.png

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

デプロイ

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

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

スクリーンショット 2025-03-15 17.17.25.png

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

スクリーンショット 2025-03-15 17.25.02.png

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

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

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

スクリーンショット 2025-03-15 17.50.42.png

スクリーンショット 2025-03-15 17.51.58.png

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

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

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

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

スクリーンショット 2025-03-15 17.49.24.png

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

スクリーンショット 2025-03-15 17.50.29.png

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

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

スクリーンショット 2025-03-15 17.53.24.png

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

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

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

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

スクリーンショット 2025-03-15 17.55.04.png

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

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

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

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

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

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

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

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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?