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?

Render無料プランでRailsアプリにサンプルデータをブラウザ経由で作る方法

Posted at

はじめに

Renderの無料プランでは、サーバーにSSHログインして ‎rails db:seed を直接実行できません。
この記事では、HTTP経由で安全に ‎db/seeds.rb を走らせ、MVPや開発初期のサンプルデータ投入を手早く実現する方法を紹介します。

  • 当方プログラミング初心者のため、内容はできるだけシンプルにまとめています
  • 実際に運用する場合は、環境変数で認証情報を管理するなど、安全な方法を検討してみてください

対象者(Who)

  • Railsアプリを開発している人
  • Renderの無料プランを利用している人
  • Shellアクセスなしでブラウザ経由でデータを作りたい人

できること(What)

  • Railsのサンプルデータや初期データを生成
  • HTTPリクエスト経由でRailsサーバーに「データ生成を実行させる」

使うタイミング(When)

  • Render無料プランでアプリをデプロイした直後
  • Shellアクセスなしで初期データを投入したいとき
  • 開発・ステージング環境でテストデータを生成したいとき

実行場所(Where)

  • Render無料プラン上のアプリケーションサーバー
  • ブラウザやPostmanなどのHTTPクライアントから
  • /seed など専用ルートを作ってWeb経由で実行

なぜブラウザ経由なのか(Why)

Render無料プランではSSHでサーバーにログインできません。そのため、rails db:seedrails console を直接実行できません。

RailsはHTTPリクエストでコードを実行できるので、ブラウザやHTTPクライアントから「サーバーに命令を送る」形にすれば、SSHなしでもデータ生成が可能です。
認証を付ければ本番環境でも安全に使えます。

実際の手順(How)

1. ルートを追加する

# config/routes.rb
# 注意: 終わったらこのルートは削除orコメントアウト
if Rails.env.production?
  post '/seed', to: 'seeds#run'
end

2. Seeds用コントローラを作成

db/seeds.rb の処理をHTTPリクエストで実行できるようにします。認証情報は環境変数から読み込みます。

# app/controllers/seeds_controller.rb
class SeedsController < ApplicationController
  # HTTP Basic認証(本番では環境変数で管理)
  http_basic_authenticate_with name: ENV.fetch('SEED_USER'),
                               password: ENV.fetch('SEED_PASSWORD')
  # ここは適宜必要な処理を入力
  def run
    load Rails.root.join('db', 'seeds.rb')
    render plain: 'Seeds 実行完了', status: :ok
  rescue => e
    render plain: "Seed 実行失敗: #{e.message}", status: :internal_server_error
  end
end

環境変数の設定例(Render本番)

Renderで /seed を実行するために設定します

Name Value
SEED_USER admin
SEED_PASSWORD secret
任意の文字でOK

スクリーンショット 2025-10-14 14.15.55.png

補足: 環境変数はRailsサーバー起動時に読み込まれるため、設定後は再デプロイして反映

3. ブラウザからアクセス

https://your-app.onrender.com/seed

注意: /seed はBasic認証で保護されています。アクセスするとユーザー名とパスワードの入力を求められるので、環境変数で設定した SEED_USERSEED_PASSWORD を入力してください。
スクリーンショット 2025-10-14 14.20.08.png


注意点

  • 認証情報はコードに直書きせず、環境変数で管理する
  • 実行が終わったら /seed ルートを無効化or削除
  • 無料プランはスリープやストレージ制限があるため、大量データの投入は避ける

まとめ

Render無料プランでも、認証付きの専用ルートを用意すればブラウザ経由でサンプルデータ投入が可能です。

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?