Ruby on Railsアプリのデプロイ
このステップバイステップガイドで、RailwayにRailsアプリをデプロイする方法を学びます。クイックセットアップ、データベース統合、cronとsidekiqのセットアップ、ワンクリックデプロイ、その他のデプロイ戦略について説明します。
著者: AIイノベーションズ 阿部隼也(X / Twitter)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」ページを作成しましょう。
- コントローラーの生成:次のコマンドを実行して、
index
アクションを持つHelloWorld
という名前の新しいコントローラーを作成します。 これにより、コントローラーに必要なファイル、ビュー、ルート、テストファイルが生成されます。rails g controller HelloWorld index
- ルートファイルの更新:
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
- ビューの変更:
app/views/hello_world/index.html.erb
ファイルを開き、その内容を次のように置き換えます。<h1>Hello World</h1> <p> This is a Rails app running on Railway</p>
- アプリケーションをローカルで実行:Railsサーバーを起動するには、次を実行します。
ブラウザを開き、bin/rails server
http://localhost:3000
にアクセスして「Hello World」ページが動作していることを確認します。
これでアプリがローカルで実行できるようになったので、Railwayにデプロイしましょう!
Ruby on RailsアプリをRailwayにデプロイ
Railwayは、セットアップと好みに応じて、Railsアプリをデプロイする複数の方法を提供します。次のいずれかの方法を選択してください。
テンプレートからのワンクリックデプロイ
最速で始めたい場合は、ワンクリックデプロイオプションが最適です。RailsアプリとPostgresデータベース、Redisをセットアップします。
下のボタンをクリックして開始します。
デプロイ後はテンプレートから Eject して、GitHub アカウントにリポジトリのコピーを作成することを強くおすすめします。これにより、ソースコードとプロジェクトを完全に制御できます。
CLIからデプロイ
Railway CLIを使用してRailsアプリをデプロイするには、次の手順に従ってください。
- Railway CLIのインストール:
- CLIをインストールし、Railwayアカウントで認証します。
- Railwayプロジェクトの初期化:
- Railsアプリディレクトリで以下のコマンドを実行します。
railway init
- プロンプトに従ってプロジェクトに名前を付けます。
- プロジェクトが作成されたら、提供されたリンクをクリックしてブラウザで表示します。
- Railsアプリディレクトリで以下のコマンドを実行します。
- アプリケーションのデプロイ:
- 以下のコマンドを使用してアプリをデプロイします。
railway up
- このコマンドは、アプリのファイルをスキャン、圧縮し、Railwayにアップロードします。ターミナルにはリアルタイムのデプロイログが表示されます。
- 以下のコマンドを使用してアプリをデプロイします。
- 注: 本番環境に
secret_key_base
がないというエラーが表示されても心配しないでください。次の手順で修正します。
- データベースサービスの追加:
railway add
を実行します。- スペースを押して
PostgreSQL
を選択し、Enter を押してプロジェクトに追加します。 - データベースサービスがRailwayプロジェクトに追加されます。
- 環境変数の設定:
- アプリサービスの変数セクションに移動し、以下を追加します。
SECRET_KEY_BASE
またはRAILS_MASTER_KEY
:値をローカルアプリのconfig/master.key
のキーに設定します。DATABASE_URL
:値を${{Postgres.DATABASE_PUBLIC_URL}}
に設定します(これは新しいPostgresデータベースのURLを参照します)。サービス変数の参照について詳しくはこちら。
- Raw Editorを使用して、その他必要な環境変数を一度に追加します。
- アプリサービスの変数セクションに移動し、以下を追加します。
- サービスの再デプロイ:
- Railwayダッシュボードでデプロイをクリックして、変更を適用します。
- デプロイの確認:
- デプロイが完了したら、View logs に移動して、サーバーが正常に実行されていることを確認します。
注: アプリに Dockerfile
がある場合(新しいRailsアプリには通常デフォルトで含まれています)、Railwayはそれを自動的に検出してアプリのビルドに使用します。そうでない場合でも、Railwayはデプロイプロセスを処理します。
- 公開URLの設定:
- 新しいサービスの「設定」タブのNetworkingセクションに移動します。
- 「Generate Domain」をクリックして、アプリの公開URLを作成します。
GitHubリポジトリからデプロイ
RailsアプリをRailwayにデプロイするには、まずアプリをGitHubリポジトリにプッシュします。それが設定されたら、以下の手順に従ってデプロイプロセスを完了します。
- Railwayで新しいプロジェクトを作成:
- Railwayにアクセスして、新しいプロジェクトを作成します。
- GitHubからデプロイ:
- Deploy from GitHub repo を選択し、リポジトリを選択します。
- RailwayアカウントがまだGitHubにリンクされていない場合は、リンクするように求められます。
- Deploy from GitHub repo を選択し、リポジトリを選択します。
- 環境変数の追加:
- Add Variables をクリックし、アプリに必要なすべての環境変数を設定します。
- 例:
RAILS_ENV
:値をproduction
に設定します。 - 例:
SECRET_KEY_BASE
またはRAILS_MASTER_KEY
:値をアプリのconfig/master.key
のキーに設定します。
- 例:
- Add Variables をクリックし、アプリに必要なすべての環境変数を設定します。
- アプリのデプロイ:
- Deploy をクリックして、デプロイプロセスを開始します。
- デプロイされると、アプリ用にRailwayサービスが作成されますが、デフォルトでは公開されません。
- データベースサービスの追加:
- Railwayプロジェクトキャンバスを右クリックするか、Create ボタンをクリックします。
- Database を選択します。
- 利用可能なデータベースから Add PostgreSQL を選択します。
- これにより、プロジェクト用に新しいPostgresデータベースサービスが作成され、デプロイされます。
- 環境変数の設定:
- アプリサービスの変数セクションに移動し、以下を追加します。
DATABASE_URL
:値を${{Postgres.DATABASE_URL}}
に設定します(これは新しいPostgresデータベースのURLを参照します)。サービス変数の参照について詳しくはこちら。
- Raw Editorを使用して、その他必要な環境変数を一度に追加します。
- アプリサービスの変数セクションに移動し、以下を追加します。
- データベースの準備とサーバーの起動:
- アプリサービスの設定セクションに移動します。
- Deploy セクションで、Custom Start Command として
bin/rails db:prepare && bin/rails server -b ::
を設定します。このコマンドは、データベースのマイグレーションを実行し、サーバーを起動します。
- Deploy セクションで、Custom Start Command として
- アプリサービスの設定セクションに移動します。
- サービスの再デプロイ:
- Railwayダッシュボードでデプロイをクリックして、変更を適用します。
- デプロイの確認:
- デプロイが完了したら、View logs に移動して、サーバーが正常に実行されていることを確認します。
注: デプロイプロセス中に、RailwayはRailsアプリであることを自動的に検出します。
- 公開URLの設定:
- 新しいサービスの「設定」タブのNetworkingセクションに移動します。
- 「Generate Domain」をクリックして、アプリの公開URLを作成します。
このガイドでは、Railwayの主なデプロイオプションについて説明しました。セットアップに適したアプローチを選択し、Railsアプリを簡単にデプロイし始めてください!
次に、RailwayでRailsアプリのワーカーとcronジョブを設定する方法について説明します。
Sidekiqを使用したワーカーとCronジョブの設定
Sidekiqは、Rubyアプリ用の強力で効率的なバックグラウンドジョブプロセッサであり、Railsとシームレスに統合されます。以下の手順に従って、RailwayでRailsアプリにSidekiqを設定して実行します。
- Sidekiqのインストール
- Railsアプリに
sidekiq
とsidekiq-cron
を追加することから始めます。ターミナルで、次のコマンドを実行します。bundle add sidekiq bundle add sidekiq-cron
- Railsアプリに
- Redisデータベースサービスの追加
- SidekiqはRedisをジョブキューとして使用します。これを設定するには:
- Railwayプロジェクトキャンバスを右クリックするか、Create ボタンをクリックします。
- Database を選択します。
- 利用可能なデータベースから Add Redis を選択します。
- これにより、アプリ用に新しいRedisサービスが作成され、デプロイされます。
- SidekiqはRedisをジョブキューとして使用します。これを設定するには:
- ワーカーサービスの作成と設定
- 次に、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はジョブキューの場所を知ることができます。サービス変数の参照について詳しくはこちら。- アプリが必要とする可能性のある他の環境変数を含めます。
- デプロイをクリックして変更を適用し、デプロイを開始します。
- 次に、Sidekiqワーカーを実行するための別のサービスを設定します。
- デプロイの確認:
- デプロイが完了したら、View Logs をクリックします。すべてが正しく設定されていれば、Sidekiqが起動し、キューに入れられたジョブを処理しているのが表示されるはずです。
- すべてのサービスが接続されていることを確認:
- この段階で、アプリケーションには次のサービスが設定され、接続されている必要があります。
- アプリサービス:メインのRailsアプリケーションを実行しています。
- ワーカーサービス:バックグラウンドジョブを処理するためにSidekiqを実行しています。
- Postgresサービス:Railsアプリのデータベース。
- Redisサービス:Sidekiqがバックグラウンドジョブを管理するために使用します。
- この段階で、アプリケーションには次のサービスが設定され、接続されている必要があります。
セットアップは次のようになります。
これらの手順に従うことで、RailwayでSidekiqを使用したバックグラウンドジョブ処理を備えた完全に機能するRailsアプリが完成します。問題が発生した場合や調整が必要な場合は、ログを確認し、環境変数の構成を再確認してください。
次のステップ
Railwayでのエクスペリエンスを最大限に活用するために、これらのリソースを調べてください。
PR