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

【rails】Neon(PostgreSQL)×Renderを使ってリリースしよう!(MacBook用)

Last updated at Posted at 2025-07-20

1. 概要

Rails 7系アプリを Neon(PostgreSQL) + Render無料公開するまでの手順をまとめました。

  • ActiveStorageで画像/動画投稿対応
  • SQLite3(開発用) → PostgreSQL(本番用)
  • Neon+Renderの無料枠で運用可能

2. GitHubの新規登録

RailsアプリをNeonやRenderで公開するには、まず GitHubアカウント が必要です。以下の手順で無料作成できます。

🔸1. GitHub公式サイトにアクセス

👉 https://github.com/

🔸2. 新規アカウントを作成

  • Sign up」または「Sign up for GitHub」をクリック
  • 以下を順に入力:
項目 説明
Username 任意のユーザー名(URLに使われます)
Email address メールアドレス(大学のメアド以外)
Password 安全なパスワード
Verify account ロボットでないことを確認

🔸3. メール認証

入力したメールに届いた認証リンクをクリックして登録完了!

🔸4. プラン選択

「Freeプラン」でOK

3. NeonでPostgreSQLを作成

🔸1. Neon公式サイトへアクセス

👉 https://neon.tech/
下記のようなトップページが表示されます。

🔸2. 「Sign Up」→ GitHubを選択

Start for free をクリックし、 GitHub を選びます。

🔸3. GitHubアカウントでログイン

GitHubのログイン画面が表示されるので、アカウントの「ユーザー名 / パスワード」を入力します。

🔸4. GitHubとNeonの連携を許可する

「Authorize Neon Console」をクリックして連携完了です。

🔸5. Create Project(NeonでPostgreSQL DBを作成)

GitHubでログインすると、自動的に「Create a new project」画面が表示されます👇

🔸6. 各項目を入力・選択

  • Project name:自分のアプリ名(geektwitter)
  • Postgres version:17
  • Cloud provider:AWS
  • Region:Singapore

✅ 全部入力したら右下の Create ボタンをクリック!

🔸7. Project Dashboardへ移動

数秒でプロジェクトが作成され、「Dashboard」画面が表示されます👇

🔸8. DATABASE_URL を取得

  1. Connect to your database「Connect」 ボタンをクリック
  2. 左下の「Show password」を押して DATABASE_URL をコピー(''はコピーしないでね)
postgresql://ユーザー名:パスワード@ホスト名/データベース名?sslmode=require

🔸9. .env ファイルに DATABASE_URLを保存

  1. アプリ直下に .env ファイルを作成し、DATABASE_URL を貼り付ける
  2. .gitignore.env を追加
.env
DATABASE_URL=postgresql://ユーザー名:パスワード@ホスト名/データベース名?sslmode=require

💡 .env ファイルは 機密情報の保管場所なので、必ず .gitignore しておきましょう。

4. Gemfileで PostgreSQL に切り替える

Railsはデフォルトで sqlite3 を使用しますが、本番運用やNeon接続には pg(PostgreSQL用)のgemが必要です。

🔸1. Gemfileを編集

コマンドプロンプト
# gem 'sqlite3' コメントアウトする(8行目付近)

# SQLite3 → 開発用(37行目付近)
group :development, :test do
  gem 'sqlite3' # 追加
  gem 'dotenv-rails' # 追加
end

# PostgreSQL → 本番用
group :production do
  gem 'pg'
end

🔸2. Gemfile.lockを削除

Gemfile.lock がある場合は右クリックで削除してください!ない場合はそのままで大丈夫です。

🔸3. ターミナルで実行

ターミナル
brew install postgresql libpq
export PATH="/opt/homebrew/opt/libpq/bin:$PATH"
bundle config --local build.pg --with-opt-dir="$(brew --prefix libpq)"
bundle lock --add-platform x86_64-linux
bundle install --without production

💡 SQLite3は開発用DB。RenderやNeonでは使えないので、pgに必ず切り替えておきましょう。

5. Dockerfileの修正(PostgreSQL用ライブラリの追加)

Neon(PostgreSQL)に接続するために pg gem を使用するため、Dockerfileには PostgreSQL関連のライブラリ追加が必要です。

🔸baseステージの修正

🧾 変更前(元の内容):
Dockerfile
# Install base packages
RUN apt-get update -qq && \
    apt-get install --no-install-recommends -y curl libjemalloc2 libvips sqlite3 && \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives
✅ 変更後(libpq5 を追加):
Dockerfile
# Install base packages
RUN apt-get update -qq && \
    apt-get install --no-install-recommends -y curl libjemalloc2 libvips sqlite3 libpq5 && \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives

libpq5 はアプリ実行中に PostgreSQL に接続するためのクライアントライブラリです。

🔸buildステージの修正

🧾 変更前(元の内容):
Dockerfile
# Install packages needed to build gems
RUN apt-get update -qq && \
    apt-get install --no-install-recommends -y build-essential git pkg-config && \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives
✅ 変更後(libpq-dev, libyaml-dev を追加):
Dockerfile
# Install packages needed to build gems
RUN apt-get update -qq && \
    apt-get install --no-install-recommends -y build-essential git pkg-config libpq-dev libyaml-dev && \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives

6. config/database.yml を書き換え

Neonの DATABASE_URL を使って、環境ごとのDB設定を共通化します。

config/database.yml
default: &default
  # adapter: sqlite3 コメントアウトする
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  adapter: sqlite3 # 追加
  database: storage/development.sqlite3

test:
  <<: *default
  adapter: sqlite3 # 追加
  database: storage/test.sqlite3

production:
  <<: *default
  adapter: postgresql # 追加
  encoding: unicode # 追加
  url: <%= ENV["DATABASE_URL"] %> # 追加

バージョン8の人のみ

config/environments/production.rb
# config.active_job.queue_adapter = :resque
+ config.active_job.queue_adapter = :async

# config.cache_store = :mem_cache_store
+ config.cache_store = :memory_store, { size: 64.megabytes }

7. GitHubにPushする(Render連携の準備)

🔸1. GitHubで新しいリポジトリを作成

👉 https://github.com/new

  • Repository name:例)geektwitter
  • その他の設定はデフォルトでOK

🔸2. ローカルからGitHubにpush

コマンドプロンプト
git config --global user.email "githubに登録したメアド"
git config --global user.name "githubのユーザー名"
git init
git add -A
git commit -m "first commit"
git remote add origin https://github.com/githubのユーザー名/リポジトリ名.git
git branch -M main
git push -u origin main

💡 .env ファイルは .gitignore 済みであることを確認!

8. Renderの新規登録手順(GitHub連携)

🔸1. Render公式サイトへアクセス

👉 https://render.com/
Get Started for Free をクリックします。

🔸2. GitHubアカウントでサインアップ

「Continue with GitHub」をクリック
👉 GitHubの認証画面にリダイレクトされます。

🔸3. GitHubとの連携を許可

初回のみ「Authorize Render」の確認画面が出ます:

  • ✅ Authorize render ボタンを押してRenderとGitHubを連携
  • Renderがあなたの リポジトリの一覧にアクセスできるようになります

🔸4. GitHubのリポジトリアクセス範囲を選択

  1. 右上の +New を押し Web Service をクリック
  2. GitHub を選択
  3. 「Only select repositories」を選択
  4. 公開したいリポジトリにチェックを入れる(例:geektwitter
  5. Install をクリック

🔸5. Renderのダッシュボードに移動

サインアップが完了すると、Renderの管理画面(Dashboard)に移動します。

  • New + ボタンから「Web Service」を作成できます
  • あとはGitHub上のRailsアプリを選択して、環境変数などを設定すれば公開できます(この後の手順で説明)

9. Renderで「New Web Service」を作成

NeonでDBを作成し、GitHubにアプリをPushした後は、RenderにログインしてWebアプリとして本番公開できるように設定します。

🔸1. Renderにログイン

👉 https://render.com/
右上から Log in をクリックし、「Continue with GitHub」でログイン

🔸2. ダッシュボードで「New +」ボタンをクリック

Renderにログインすると、ダッシュボード画面に移動します。
画面左上の「New +」ボタンをクリックし、「Web Service」 を選択します。

🔸3. GitHubリポジトリを選択

連携済みのGitHubアカウントから、デプロイしたいアプリのリポジトリを選びます。

「Only select repositories」で選択していない場合は、ここでGitHub連携の再設定を求められることがあります。

🔸4. Webサービスの各種設定を入力

項目 内容
Name 任意(例:geektwitter
Instance Type Free(無料プランでOK)
その他 初期のままでOK(RuntimeやRegionなど)

🔸5. 環境変数(Environment Variables)の設定

サービス作成画面の下部にある「Advanced → Environment Variables」を開いて、以下を追加します:

Name Value(入力内容)
RAILS_MASTER_KEY config/master.keyの中身
DATABASE_URL Neonで発行された接続URL(例:postgresql://~?sslmode=require)

DATABASE_URL はデフォルトにないので、Add Environment Variable を押して追加してね!

💡 Cloudinaryを使って画像/動画アップロードをしている場合は、以下の3つも追加で登録してください:

Name Value(.envから取得)
CLOUD_NAME あなたのクラウド名(例:d8xxxxx
CLOUDINARY_API_KEY APIキー
CLOUDINARY_API_SECRET APIシークレットキー

🔐 これらは .env で使っていたものと同じです。Renderの環境変数に登録することで、本番環境でもCloudinaryが機能するようになります。

すべて入力が完了したら「Create Web Service」ボタンをクリック!
自動でデプロイが始まります!

10. デプロイ確認方法

🔎 デプロイの進行状況を確認する

Render では、「Create Web Service」ボタンをクリックすると自動でデプロイが開始されます。
その後、画面上部の「Deploys」タブに自動で切り替わり、ビルドログがリアルタイムで表示されます。

✅ 成功のサイン

下記のように表示されれば、デプロイは無事完了です!

✅ Deploy succeeded

そのすぐ下に本番環境の URL が表示されます:

https://geektwitter.onrender.com

👆このURLをクリックすると、アプリが本番環境で動いているか確認できます!

🎉 これで本番デプロイ完了!

Neon(PostgreSQL)× Render を活用し、完全無料で Rails アプリを公開することができました!
お疲れさまでした!🚀✨

🔁 再デプロイする方法

🔸ステップ1:修正をGitHubにPush

コマンドプロンプト
git add -A
git commit -m "(変更内容の説明)"
git push

🔸ステップ2:「Manual Deploy」→「Deploy latest commit」をクリック

これで、GitHub 上の最新コミットを使って再デプロイが始まります。

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