App Engine フレキシブル環境で動作する Ruby on Rails アプリの開発を始めます。作成したアプリはすべての Google プロダクトの基盤となる同じインフラストラクチャで動作するため、数人でも何百万人でも、すべてのユーザーに対応できるように確実にスケーリングできます。
このチュートリアルは、Rails ウェブ開発の知識があることを前提としています。新しい Rails アプリのデプロイについて手順を追って説明します。
このチュートリアルでは、 Ruby 3.0 以降をサポートし、必要とします。
始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init
Rails 用のローカル環境の設定
Rails の開発用にローカル環境を設定するには、次の操作を行う必要があります。
インストール済みの Ruby、Rails、Google Cloud CLI に付属する Cloud Shellを使用することもできます。
Rails とその依存関係のインストールの詳細については、 公式 Rails スタートガイド をご覧ください。
事前準備が完了したら、Rails アプリを作成してデプロイできます。以降のセクションでは、アプリの構成、実行、デプロイの手順を順番に説明します。
新しいアプリの作成
新しい Rails サンプルアプリを作成します。
rails new appengine_exampleサンプルコードのあるディレクトリに移動します。
cd appengine_example
アプリのローカル実行
ローカルのパソコン上で新しい Rails アプリを実行するには:
ローカルのウェブサーバーを起動します。
bundle exec rails serverブラウザで http://localhost:3000/ にアクセスします。
サンプルアプリに、Rails のロゴと Rails と Ruby のバージョンが表示されます。
シンプルなページの追加
ここで、生成した Rails アプリにスタートページを追加します。
新しいページのスキャフォールディングを生成するには、
WelcomeControllerという名前で新しい Rails コントローラを作成し、indexアクションを指定します。bundle exec rails generate controller Welcome indexファイル
app/views/welcome/index.html.erbを開いて、次のボイラープレート HTML を確認します。好きなようにファイルを変更します。たとえば、次の内容を使用できます。
Rails のルート アクションとして
indexコントローラ アクションを設定します。 その後、ユーザーが Rails アプリにアクセスするたびに、作成したスタートページが表示されます。ファイル
config/routes.rbを開いて、生成された内容を確認します。このファイルを変更するには、
root 'welcome#index'を追加します。ファイルを保存して閉じます。前述の説明のとおりに Rails アプリをテストします。
アプリを App Engine フレキシブル環境にデプロイする
App Engine フレキシブル環境では、app.yaml というファイルが使用されます。アプリのデプロイ構成を記述します。 このファイルが存在しない場合は、gcloud CLI によりデプロイ構成が推測されます。ただし、Rails は本番環境で秘密鍵を必要とするので、このファイルを提供することをおすすめします。
App Engine にデプロイするサンプルアプリを構成するには、サンプル アプリ ディレクトリのルートに app.yaml という名前の新しいファイルを作成し、次を追加します。
Rails 秘密鍵の構成
Rails アプリを本番環境にデプロイする場合、環境変数 SECRET_KEY_BASE に、ユーザー セッション データの保護に使用される秘密鍵を設定します。この環境変数は config/secrets.yml ファイルから読み取られます。
新しい秘密鍵を生成します。
bundle exec rails secret生成された秘密鍵をコピーします。この秘密鍵は次のステップで使用します。
前の手順で作成した
app.yamlファイルを開き、env_variablesセクションを追加します。env_variablesは、App Engine フレキシブル環境のproduction環境の環境変数を設定します。app.yamlは下の例のようになります。[SECRET_KEY]はコピーした秘密鍵に置き換えます。
App Engine フレキシブル環境アプリのセットアップ
アプリを初めてデプロイする場合は、App Engine フレキシブル環境アプリを作成し、Rails アプリを実行するリージョンを選択できるようにする必要があります。詳細については、リージョンとゾーンをご覧ください。
App Engine アプリを作成します。デフォルトでは、次のコマンドで 2 つのインスタンスが作成されます。
gcloud app createRuby アプリの App Engine フレキシブル環境をサポートするリージョンを選択します。
App Engine フレキシブル環境へのデプロイ
次のコマンドを実行して、サンプルアプリをデプロイします。
gcloud app deploy
更新が完了したことを通知するメッセージが表示されるまで待ちます。これには数分かかることがあります。
デプロイされた Rails アプリへのアクセス
プロジェクト ID を取得するには、
gcloud infoを実行します。ブラウザに次の URL を入力します。
https://PROJECT_ID.REGION_ID.r.appspot.com次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト IDREGION_ID: App Engine がアプリに割り当てるコード
次の内容が表示されます。

今回は、App Engine フレキシブル環境で実行される Rails アプリによってリクエストが処理されます。
このコマンドは、app.yaml で説明されているようにアプリをデプロイし、新しくデプロイされたバージョンをデフォルト バージョンとして設定します。これにより、すべての新しいトラフィックがこのバージョンによって処理されます。アプリをデプロイすると、アプリが提供されているかどうかをプラットフォームがチェックする間に、メッセージが繰り返し表示される場合があります。これは正常な動作です。アプリの更新が完了したことを通知するメッセージが表示されるまで待ちます。
アプリを更新する場合は、最初にデプロイしたときと同じコマンドを使って更新バージョンをデプロイできます。デプロイを行うと、アプリの新しいバージョンが作成され、デフォルトのバージョンに設定されます。古いバージョンはそのまま残り、関連付けられた VM インスタンスも同様に残ります。 すべてのアプリ バージョンと VM インスタンスが課金対象のリソースとなるのでご注意ください。
App Engine ログの読み取り
Rails アプリをデプロイした後、ログを見ることができます。コンソールの Google Cloud ログ エクスプローラまたは gcloud app logs read を使用して、アプリのログを確認できます。詳しくは、
gcloud CLI を使用したログの読み取りをご覧ください。
リソースのクリーンアップ
チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。次のセクションで、リソースを削除または無効にする方法を説明します。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- コンソールで [**リソースの管理**] ページに移動します。 Google Cloud
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、 [Shut down] をクリックしてプロジェクトを削除します。
App Engine のバージョンの削除
アプリのバージョンを削除するには:
- コンソールで、App Engine の [**バージョン**] ページに移動します。 Google Cloud
- デフォルト以外で削除するアプリのバージョンのチェックボックスをオンにします。 削除します。
- アプリのバージョンを削除するには、 [Delete] をクリックします。