0
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アプリをデプロイする方法について

Last updated at Posted at 2025-06-11

記事概要

RenderでRailsアプリをデプロイする方法について、まとめる。

Renderとは

アプリケーションの公開、運用を行うためのプラットフォームを提供するサービス。基本機能だけであれば無料で使用でき、デプロイが容易であることから注目を集めている

言語やフレームワーク

使用技術
フロントエンド HTML
バックエンド Ruby
Ruby on Rails
データベース PostgreSQL
インフラ Render
API -
その他 -

前提

  • Renderにアカウント登録し、GitHubと連携している
  • ローカル開発環境で、Webアプリケーションを開発済みである
  • PostgreSQLをインストール済みである
    インストール方法は、こちらを参照
  • GitHubにコードを連携済みである
    GitHubへの連携方法は、こちらを参照

手順①(アプリ設定)

  1. PostgreSQLを使用できるように、Gemを追加する
    Gemの追加は、こちらを参照
  2. Render用の設定ファイルを追加する
    1. binフォルダに、render-build.shファイルを手動作成する
    2. ファイルに下記を記述する
      render-build.sh
      #!/usr/bin/env bash
      # exit on error
      set -o errexit
      
      bundle install
      bundle exec rake assets:precompile
      bundle exec rake assets:clean
      bundle exec rake db:migrate
      bundle exec rails db:seed # シード値を追加する場合は記述
      
  3. DBの設定を変更するため、config/database.ymlを編集する
    database.yml
    development:
      # 中略
      database: [アプリ名]_development
    
    test:
      # 中略
      database: [アプリ名]_test
    
  4. Gemfile.lockの設定を変更する
    # アプリのディレクトリに移動
    % cd ~/[アプリ名]
    
    # Gemfile.lockに設定を追加
    % bundle lock --add-platform x86_64-linux
    
  5. アプリをクローン作成していない場合は、手順②へ進む
    1. config/credentials.yml.encを削除する
    2. ターミナル.appで下記を実行する
      # アプリのディレクトリに移動
      % cd ~/[アプリ名]
      
      # 秘密情報管理用のファイルを作成 ※秘密情報管理用のファイルが存在すると、作成されない
      % EDITOR="vi" bin/rails credentials:edit
      
    3. 実行結果を確認する
    4. 「escキー」→「:」→「q」と入力し、「enterキー」を押してファイルを閉じる
    5. 下記2ファイルが生成されていることを確認する
      • config/credentials.yml.enc
      • config/master.key

手順②(GitHub)

  1. GitHubへプッシュする
    プッシュ方法は、こちらを参照

手順③(RenderでDB作成)

  1. Renderに、ログインする
  2. ヘッダーに表示されている「+ New」のボタンをクリックする
    Image from Gyazo
  3. 「PostgreSQL」を選択する
    Image from Gyazo
  4. DB名([アプリ名]_production)を入力する
    Image from Gyazo
  5. リージョンをOhioに変更する
    Image from Gyazo
  6. Instance TypeをFree(無料)に変更する
    Image from Gyazo
  7. 「Create Database」をクリックする
  8. DB作成が開始される
  9. 「Status」がAvailableに変更されると、DB作成が完了している
  10. 「Internal Database URL」をコピーし、保管する

手順④(Renderでアプリ作成)

  1. ヘッダーに表示されている「+ New」のボタンをクリックする
    Image from Gyazo
  2. 「Web Service」を選択する
    Image from Gyazo
  3. GitHub
    1. GitHubのリポジトリと連携させるための設定画面が表示される
      Image from Gyazo
    2. デプロイしたいリポジトリを選択する
      Image from Gyazo
  4. Name欄にアプリケーションの名称を入力する
    ※エラーになるため、アプリケーション名に_を使用しないこと
    ※他のユーザーと重複したアプリ名は使用できない
    Image from Gyazo
  5. LanguageをRubyに変更する
  6. リージョンをOhioに変更する
    Image from Gyazo
  7. 初期状態で入力されているコマンドを削除して、以下の内容をコピペする
    入力欄 入力内容
    Build Command ./bin/render-build.sh
    Start Command bundle exec puma -C config/puma.rb
  8. Instance TypeをFree(無料)に変更する
    Image from Gyazo
  9. 環境変数を設定(マスターキー)
    1. VSCodeでアプリのconfig/master.keyの内容をコピーする
    2. Renderの「RAILS_MASTER_KEY」項目の右側にペーストする
  10. 環境変数を設定(データベースURL)
    1. 「Add Environment Variable」のボタンをクリックし、環境変数を追加する
    2. 左側に「DATABASE_URL」と入力する
    3. 右側にデータベース作成時にコピーした「Internal Database URL」の内容をペーストする
  11. 「Deploy Web Service」のボタンをクリックする
  12. ターミナルが表示され、デプロイ作業が開始される
  13. デプロイ完了後、緑色のアイコンで「Live」と表示され、ターミナルに「Puma starting in cluster mode...」という文字が見える

手順⑤(アプリ確認)

  1. リンクをクリックする
    Image from Gyazo
  2. ローカルで作った通り、アプリが表示されれば成功である
    デプロイが完了したとメッセージが表示されているにもかかわらず、アプリケーションが表示されない場合、20~30分後に再確認する

データベースを休止状態にする

  1. Renderのダッシュボードにアクセスする
  2. 休止させるデータベースを選択する
  3. 「Suspend Database」ボタンをクリックする ※1番下までスクロール
  4. 休止させるとボタンの表示が変わり、「Resume Database」となる

データベースの休止状態を解除する

  1. 「Resume Database」をクリックする
    →再度利用可能になる

自動デプロイを停止する

  1. Renderのダッシュボードにアクセスする
  2. 自動デプロイを停止するアプリを、選択する
  3. メニューから「Settings」を選択する
  4. 「Build & Deploy」グループの中に「Auto-Deploy」という項目があるので、「Edit」ボタンをクリックする
  5. 「Yes」と書かれたプルダウンメニューをクリックする
  6. メニューが開くので、「No」をクリックする
  7. 「Save changes」をクリックする

補足:ストレージサービスが必要

ユーザーがアップロードした画像データは、データベースが停止またはリフレッシュされる度に、消えてしまう仕様
→ストレージサービスを利用することで、画像を長期的に保存することができるようになる

Rails特定のディレクトリに入れると画像やアイコンのファイルは消えてしまう。S3のバケットに画像を置き、そこから公開用のリンクを利用してアプリで表示する

補足:サーバがスリープ状態になる

しばらくアクセスがないと「スリープ状態」になる

アプリを動かしているサーバ自体が起動していない状態になり、アクセスが来て初めてサーバを起動する形になるため、サーバの起動時間がかかる分アプリの画面がブラウザに表示されるまでに非常に長い時間を有する

UptimeRobot」というサービスを使うと、Renderでデプロイしたアプリに対して定期的に自動でリクエストを行い、スリープ状態になることを防いでくれる

UptimeRobotの使用方法は、こちらを参照

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