【Railway】Ruby on Railsアプリのデプロイ

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

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

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」ページを作成しましょう。

アプリケーションをローカルで実行:Railsサーバーを起動するには、次を実行します。

bin/rails server

ブラウザを開き、http://localhost:3000 にアクセスして「Hello World」ページが動作していることを確認します。

ビューの変更app/views/hello_world/index.html.erb ファイルを開き、その内容を次のように置き換えます。

<h1>Hello World</h1>
<p> This is a Rails app running on Railway</p>

ルートファイルの更新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

コントローラーの生成:次のコマンドを実行して、index アクションを持つ HelloWorld という名前の新しいコントローラーを作成します。

rails g controller HelloWorld index

これにより、コントローラーに必要なファイル、ビュー、ルート、テストファイルが生成されます。

これでアプリがローカルで実行できるようになったので、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プロジェクトの初期化
    • プロンプトに従ってプロジェクトに名前を付けます。
    • プロジェクトが作成されたら、提供されたリンクをクリックしてブラウザで表示します。
  3. アプリケーションのデプロイ
    • このコマンドは、アプリのファイルをスキャン、圧縮し、Railwayにアップロードします。ターミナルにはリアルタイムのデプロイログが表示されます。

以下のコマンドを使用してアプリをデプロイします。

railway up

Railsアプリディレクトリで以下のコマンドを実行します。

railway init
  • 注: 本番環境に 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のインストール
  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がバックグラウンドジョブを管理するために使用します。

Railsアプリに sidekiqsidekiq-cron を追加することから始めます。ターミナルで、次のコマンドを実行します。

bundle add sidekiq
bundle add sidekiq-cron

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

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

次のステップ

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

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

Read more

リアルタイム投票アプリ5選【ライブ配信やイベントで】

リアルタイム投票アプリ5選【ライブ配信やイベントで】

ウェビナーやセミナー、社内研修を実施する際、「参加者が受け身になってしまう」「質問がなかなか出てこない」といった課題を感じたことはないでしょうか。 オンラインでの情報発信が当たり前になった今、一方的な配信だけでは参加者の満足度を高めることが難しくなっています。そこで注目されているのが、リアルタイムで参加者の意見を集約し、その場で結果を共有できる投票・質問ツールです。 本記事では、ライブ配信やイベント、研修などで活用できるリアルタイム投票アプリを5つ厳選してご紹介します。 リアルタイム投票でつながる参加者とイベント リアルタイム投票やQ&A機能を使うと、視聴者や参加者の意見を即座に集計・表示できます。講義や会議の進行を妨げず、参加者全員が自分の意見を簡単に表明できる仕組みです。 従来の挙手による質疑応答では、発言しづらいと感じる参加者も少なくありません。特にオンラインイベントでは、カメラがオンになっていることへの抵抗感や、大人数の前で質問することへのハードルが存在します。 しかし、スマートフォンから匿名で投票やコメントができる仕組みがあれば、参加者は気軽に自分の意見を伝えら

By 阿部 隼也
質問受付ツールの選び方とおすすめ5選を紹介

質問受付ツールの選び方とおすすめ5選を紹介

セミナーや講演会、社内研修などで「質問はありませんか?」と投げかけても、なかなか手が挙がらない経験はないでしょうか。参加者に有益な情報を提供しても、疑問や意見が共有されないまま終わってしまうのは、主催者にとっても参加者にとっても大きな機会損失です。 こうした課題を解決するために注目されているのが「質問受付ツール」です。参加者がスマートフォンから匿名で質問を投稿できるため、発言への抵抗感が下がり、活発なコミュニケーションが生まれます。 本記事では、質問受付ツールの基本機能から、実際に役立つおすすめツール5選、そして選定時に押さえておきたいポイントまで、実務に活かせる情報をまとめて解説します。 質問受付の現場課題 イベントやセミナーの運営で最も頭を悩ませる問題の一つが、参加者からの質問をいかに引き出すかという点です。質問タイムを設けても、会場がシーンと静まり返ってしまい、仕方なく「それでは時間になりましたので」と締めくくる光景は珍しくありません。 この背景には、日本特有の文化的要因も関係しています。大勢の前で発言することへの恥ずかしさ、自分の質問が的外れではないかという不安、他

By 阿部 隼也
オンラインセミナーアプリの選び方。参加者エンゲージメントを高めるポイント

オンラインセミナーアプリの選び方。参加者エンゲージメントを高めるポイント

近年、オンラインセミナーの活用が急速に広がっています。会場のコストや移動時間を気にすることなく、全国・世界中から参加者を集められる点は大きな魅力です。 しかし、せっかく開催しても 「参加者が途中で離脱してしまう」 「ただ見ているだけで反応が薄い」 といった課題を抱えている企業も少なくありません。 本記事では、参加者のエンゲージメントを高め、成果につながるオンラインセミナーアプリの選び方と、実務に役立つ具体的なポイントを解説します。 参加者とのつながりを生むオンライン環境の設計 オンラインセミナーにおける最大の課題は、画面越しの距離感です。会場で直接顔を合わせる機会がないからこそ、参加者が「ただ見ているだけ」にならないような仕組みが求められます。適切なツールと機能選びが、参加者のエンゲージメントを左右します。 従来のオフラインセミナーでは、会場の雰囲気や参加者同士の反応が自然と生まれましたが、オンラインではそうした「空気感」が伝わりにくくなります。だからこそ、双方向のコミュニケーション機能や、参加者の行動データを活用した設計が重要になるのです。 エンゲージメントを高

By 阿部 隼也
参加者の質問を効率的に管理!ZoomウェビナーQ&A機能の使い方を徹底解説

参加者の質問を効率的に管理!ZoomウェビナーQ&A機能の使い方を徹底解説

オンラインでのセミナーやイベントが日常化する中で、Zoomウェビナーを活用している企業が増えています。しかし、ウェビナーの開催で意外と頭を悩ませるのが「参加者からの質問をどう管理するか」という点ではないでしょうか。 セミナーが盛り上がり、次々と質問が寄せられるのは嬉しいことです。一方で、質問が多すぎて整理しきれない、どの質問に優先的に答えるべきか判断に迷う、といった課題も生じます。こうした問題を解決するために役立つのが、ZoomウェビナーのQ&A機能です。 本記事では、ZoomウェビナーのQ&A機能の基本的な使い方から、参加者の質問を効率的に管理する実践的なテクニックまで、詳しく解説していきます。 ZoomウェビナーのQ&A機能とは ZoomウェビナーのQ&A機能は、ウェビナー開催中に参加者が質問を投稿し、主催者側が回答を行うための専用機能です。この機能を使うことで、質問と回答がスレッド形式で整理され、効率的なコミュニケーションが可能になります。 チャット機能との違い Zoomには「チャット機能」もあるため、「Q&A機能とチャット機能の違いは何か」と疑問に思う方も多いで

By 阿部 隼也