AIイノベーションズ
Railway/Guides

Ruby on Railsアプリのデプロイ

このステップバイステップガイドで、RailwayにRailsアプリをデプロイする方法を学びます。クイックセットアップ、データベース統合、cronとsidekiqのセットアップ、ワンクリックデプロイ、その他のデプロイ戦略について説明します。

著者: AIイノベーションズ 阿部隼也X / Twitter

Railwayはこちら

Ruby on Railsアプリのデプロイ

Railsは、現代のWebアプリの複雑さを圧縮するように設計されたRubyのフルスタックフレームワークです。フロントエンドとバックエンドの両方で素晴らしいWebアプリを構築するために必要なすべてのツールが付属しています。

Railsアプリの作成

注: RailsアプリがローカルまたはGitHubに既にある場合は、この手順をスキップして、Ruby on RailsアプリをRailwayにデプロイに直接進むことができます。

新しいRailsアプリを作成するには、お使いのマシンにRubyとRailsがインストールされていることを確認してください。すべてが設定されたら、ターミナルで次のコマンドを実行します。

rails new blog --database=postgresql

このコマンドは、PostgreSQLをデータベース構成として持つ blog という名前の新しいRailsアプリを作成します。次に、すべてが正しく機能していることを確認するために、簡単な「Hello World」ページを作成しましょう。

  1. コントローラーの生成:次のコマンドを実行して、index アクションを持つ HelloWorld という名前の新しいコントローラーを作成します。
    rails g controller HelloWorld index
    これにより、コントローラーに必要なファイル、ビュー、ルート、テストファイルが生成されます。
  2. ルートファイルの更新config/routes.rb ファイルを開き、ルートを hello_world#index アクションに設定するように変更します。
    Rails.application.routes.draw do
        get "hello_world/index"
        # https://guides.rubyonrails.org/routing.html のDSLに従ってアプリケーションルートを定義します
        # アプリが例外なく起動した場合は200を返し、それ以外の場合は500を返す/upでのヘルスステータスを公開します。
        # ロードバランサーや稼働時間モニターがアプリがライブであることを確認するために使用できます。
        get "up" => "rails/health#show", as: :rails_health_check
        # app/views/pwa/*から動的PWAファイルをレンダリング
        get "service-worker" => "rails/pwa#service_worker", as: :pwa_service_worker
        get "manifest" => "rails/pwa#manifest", as: :pwa_manifest
        # ルートパスルート(「/」)を定義します
        root "hello_world#index"
    end
  3. ビューの変更app/views/hello_world/index.html.erb ファイルを開き、その内容を次のように置き換えます。
    <h1>Hello World</h1>
    <p> This is a Rails app running on Railway</p>
  4. アプリケーションをローカルで実行:Railsサーバーを起動するには、次を実行します。
    bin/rails server
    ブラウザを開き、http://localhost:3000 にアクセスして「Hello World」ページが動作していることを確認します。

これでアプリがローカルで実行できるようになったので、Railwayにデプロイしましょう!

Ruby on RailsアプリをRailwayにデプロイ

Railwayは、セットアップと好みに応じて、Railsアプリをデプロイする複数の方法を提供します。次のいずれかの方法を選択してください。

  1. テンプレートからのワンクリックデプロイ
  2. CLIを使用
  3. GitHubリポジトリから

テンプレートからのワンクリックデプロイ

最速で始めたい場合は、ワンクリックデプロイオプションが最適です。RailsアプリとPostgresデータベース、Redisをセットアップします。

下のボタンをクリックして開始します。

Railwayにデプロイ

デプロイ後はテンプレートから Eject して、GitHub アカウントにリポジトリのコピーを作成することを強くおすすめします。これにより、ソースコードとプロジェクトを完全に制御できます。

CLIからデプロイ

Railway CLIを使用してRailsアプリをデプロイするには、次の手順に従ってください。

  1. Railway CLIのインストール
    • CLIをインストールし、Railwayアカウントで認証します。
  2. Railwayプロジェクトの初期化
    • Railsアプリディレクトリで以下のコマンドを実行します。
      railway init
    • プロンプトに従ってプロジェクトに名前を付けます。
    • プロジェクトが作成されたら、提供されたリンクをクリックしてブラウザで表示します。
  3. アプリケーションのデプロイ
    • 以下のコマンドを使用してアプリをデプロイします。
      railway up
    • このコマンドは、アプリのファイルをスキャン、圧縮し、Railwayにアップロードします。ターミナルにはリアルタイムのデプロイログが表示されます。
  • 注: 本番環境に secret_key_base がないというエラーが表示されても心配しないでください。次の手順で修正します。
  1. データベースサービスの追加
    • railway add を実行します。
    • スペースを押して PostgreSQL を選択し、Enter を押してプロジェクトに追加します。
    • データベースサービスがRailwayプロジェクトに追加されます。
  2. 環境変数の設定
    • アプリサービスの変数セクションに移動し、以下を追加します。
      • SECRET_KEY_BASE または RAILS_MASTER_KEY:値をローカルアプリの config/master.key のキーに設定します。
      • DATABASE_URL:値を ${{Postgres.DATABASE_PUBLIC_URL}} に設定します(これは新しいPostgresデータベースのURLを参照します)。サービス変数の参照について詳しくはこちら
    • Raw Editorを使用して、その他必要な環境変数を一度に追加します。
  3. サービスの再デプロイ
    • Railwayダッシュボードでデプロイをクリックして、変更を適用します。
  4. デプロイの確認
    • デプロイが完了したら、View logs に移動して、サーバーが正常に実行されていることを確認します。

注: アプリに Dockerfile がある場合(新しいRailsアプリには通常デフォルトで含まれています)、Railwayはそれを自動的に検出してアプリのビルドに使用します。そうでない場合でも、Railwayはデプロイプロセスを処理します。

  1. 公開URLの設定
    • 新しいサービスの「設定」タブのNetworkingセクションに移動します。
    • 「Generate Domain」をクリックして、アプリの公開URLを作成します。

GitHubリポジトリからデプロイ

RailsアプリをRailwayにデプロイするには、まずアプリをGitHubリポジトリにプッシュします。それが設定されたら、以下の手順に従ってデプロイプロセスを完了します。

  1. Railwayで新しいプロジェクトを作成
    • Railwayにアクセスして、新しいプロジェクトを作成します。
  2. GitHubからデプロイ
    • Deploy from GitHub repo を選択し、リポジトリを選択します。
      • RailwayアカウントがまだGitHubにリンクされていない場合は、リンクするように求められます。
  3. 環境変数の追加
    • Add Variables をクリックし、アプリに必要なすべての環境変数を設定します。
      • 例:RAILS_ENV:値を production に設定します。
      • 例:SECRET_KEY_BASE または RAILS_MASTER_KEY:値をアプリの config/master.key のキーに設定します。
  4. アプリのデプロイ
    • Deploy をクリックして、デプロイプロセスを開始します。
    • デプロイされると、アプリ用にRailwayサービスが作成されますが、デフォルトでは公開されません。
  5. データベースサービスの追加
    • Railwayプロジェクトキャンバスを右クリックするか、Create ボタンをクリックします。
    • Database を選択します。
    • 利用可能なデータベースから Add PostgreSQL を選択します。
      • これにより、プロジェクト用に新しいPostgresデータベースサービスが作成され、デプロイされます。
  6. 環境変数の設定
    • アプリサービスの変数セクションに移動し、以下を追加します。
    • Raw Editorを使用して、その他必要な環境変数を一度に追加します。
  7. データベースの準備とサーバーの起動
    • アプリサービスの設定セクションに移動します。
      • Deploy セクションで、Custom Start Command として bin/rails db:prepare && bin/rails server -b :: を設定します。このコマンドは、データベースのマイグレーションを実行し、サーバーを起動します。
  8. サービスの再デプロイ
    • Railwayダッシュボードでデプロイをクリックして、変更を適用します。
  9. デプロイの確認
    • デプロイが完了したら、View logs に移動して、サーバーが正常に実行されていることを確認します。

注: デプロイプロセス中に、RailwayはRailsアプリであることを自動的に検出します。

  1. 公開URLの設定
    • 新しいサービスの「設定」タブのNetworkingセクションに移動します。
    • 「Generate Domain」をクリックして、アプリの公開URLを作成します。

このガイドでは、Railwayの主なデプロイオプションについて説明しました。セットアップに適したアプローチを選択し、Railsアプリを簡単にデプロイし始めてください!

次に、RailwayでRailsアプリのワーカーとcronジョブを設定する方法について説明します。

Sidekiqを使用したワーカーとCronジョブの設定

Sidekiqは、Rubyアプリ用の強力で効率的なバックグラウンドジョブプロセッサであり、Railsとシームレスに統合されます。以下の手順に従って、RailwayでRailsアプリにSidekiqを設定して実行します。

  1. Sidekiqのインストール
    • Railsアプリに sidekiqsidekiq-cron を追加することから始めます。ターミナルで、次のコマンドを実行します。
      bundle add sidekiq
      bundle add sidekiq-cron
  2. Redisデータベースサービスの追加
    • SidekiqはRedisをジョブキューとして使用します。これを設定するには:
      • Railwayプロジェクトキャンバスを右クリックするか、Create ボタンをクリックします。
      • Database を選択します。
      • 利用可能なデータベースから Add Redis を選択します。
        • これにより、アプリ用に新しいRedisサービスが作成され、デプロイされます。
  3. ワーカーサービスの作成と設定
    • 次に、Sidekiqワーカーを実行するための別のサービスを設定します。
      • 新しい空のサービスを作成し、ワーカーサービスという名前を付けます。
      • このサービスの設定タブに移動して構成します。
      • ソースセクションで、GitHubリポジトリをソースリポジトリに接続します。
      • ビルドセクションで、カスタムビルドコマンドとして bundle install を設定します。これにより、必要な依存関係がインストールされます。
      • デプロイセクションで、カスタム開始コマンドとして bundle exec sidekiq を設定します。このコマンドは、Sidekiqを起動し、ジョブの処理を開始します。
      • サービス設定の上部にある変数をクリックします。
      • 次の環境変数を追加します。
        • RAILS_ENV:値を production に設定します。
        • SECRET_KEY_BASE または RAILS_MASTER_KEY:これをRailsアプリのシークレットキーの値に設定します。
        • REDIS_URL:これを ${{Redis.REDIS_URL}} に設定して、RedisデータベースのURLを参照します。これにより、Sidekiqはジョブキューの場所を知ることができます。サービス変数の参照について詳しくはこちら
        • アプリが必要とする可能性のある他の環境変数を含めます。
      • デプロイをクリックして変更を適用し、デプロイを開始します。
  4. デプロイの確認
    • デプロイが完了したら、View Logs をクリックします。すべてが正しく設定されていれば、Sidekiqが起動し、キューに入れられたジョブを処理しているのが表示されるはずです。
  5. すべてのサービスが接続されていることを確認
    • この段階で、アプリケーションには次のサービスが設定され、接続されている必要があります。
      • アプリサービス:メインのRailsアプリケーションを実行しています。
      • ワーカーサービス:バックグラウンドジョブを処理するためにSidekiqを実行しています。
      • Postgresサービス:Railsアプリのデータベース。
      • Redisサービス:Sidekiqがバックグラウンドジョブを管理するために使用します。

セットアップは次のようになります。

これらの手順に従うことで、RailwayでSidekiqを使用したバックグラウンドジョブ処理を備えた完全に機能するRailsアプリが完成します。問題が発生した場合や調整が必要な場合は、ログを確認し、環境変数の構成を再確認してください。

次のステップ

Railwayでのエクスペリエンスを最大限に活用するために、これらのリソースを調べてください。

Railwayはこちら

PR