在 App Engine 彈性環境中執行 Rails 7

開始開發在 App Engine 彈性環境中執行的 Ruby on Rails 應用程式。 您建立的應用程式與所有 Google 產品採用相同的基礎架構,因此無論使用者人數多寡,都能放心擴大規模,為所有使用者提供服務。

本教學課程假設您熟悉 Rails 網頁程式開發人員。並會逐步引導您部署新的 Rails 應用程式。

本教學課程支援並需要 Ruby 3.0 以上版本。

事前準備

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. 安裝 Google Cloud CLI。

  4. 設定 gcloud CLI,使用您的聯合身分。

    詳情請參閱「 使用聯合身分登入 gcloud CLI」。

  5. 執行下列指令,初始化 gcloud CLI:

    gcloud init

設定本機環境以使用 Rails

如要設定本機環境以進行 Rails 開發作業,請完成下列步驟:

  1. 安裝 Ruby 3.0 以上版本。

  2. 安裝 Rails 7 Gem。

  3. 安裝 Bundler Gem。

或者,您也可以使用 Cloud Shell,其中已預先安裝 Ruby、Rails 和 Google Cloud CLI。

如要進一步瞭解如何安裝 Rails 及其依附元件,請參閱官方的「開始使用 Rails」指南。

完成必要條件後,即可建立及部署 Rails 應用程式。以下各節將引導您設定、執行及部署應用程式。

建立新的應用程式

  1. 建立新的 Rails 範例應用程式。

    rails new appengine_example
    
  2. 前往含有程式碼範例的目錄。

    cd appengine_example
    

在本機執行應用程式

如何在本機電腦上執行新的 Rails 應用程式:

  1. 啟動本機網路伺服器。

     bundle exec rails server
    
  2. 在瀏覽器中前往 http://localhost:3000/。

    範例應用程式會顯示 Rails 標誌,以及 Rails 和 Ruby 版本。

新增簡易頁面

接著來為 Rails 應用程式新增歡迎頁面。

  1. 如要為新頁面產生架構,請建立名為 WelcomeController 的新 Rails 控制器,並加入 index 動作。

    bundle exec rails generate controller Welcome index
    
  2. 開啟 app/views/welcome/index.html.erb 檔案,查看下列樣板 HTML。

    <h1>Welcome#index</h1>
    <p>Find me in app/views/welcome/index.html.erb</p>
  3. 視需要修改檔案。例如,您可以使用以下內容:

    <h1>Welcome</h1>
    <p>This is a home page for a new Rails App on Google Cloud Platform!</p>
  4. 將 index 控制器動作設為 Rails 的根動作。 這樣一來,使用者每次造訪 Rails 應用程式時,都會看到歡迎頁面。

  5. 開啟 config/routes.rb 檔案,查看產生的下列內容。

    Rails.application.routes.draw do
      get 'welcome/index'
    
      # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
    end
  6. 如要修改這個檔案,請新增 root 'welcome#index'。

    Rails.application.routes.draw do
      get 'welcome/index'
    
      # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
      root 'welcome#index'
    end
  7. 儲存並關閉檔案,以先前的方式測試 Rails 應用程式。

將應用程式部署至 App Engine 彈性環境

App Engine 彈性環境會使用名為 app.yaml 的檔案。描述應用程式的部署設定。如果沒有這個檔案,gcloud CLI 會嘗試推測部署設定。但仍建議您提供此檔案,因為 Rails 需要正式環境中的密鑰。

如要設定範例應用程式,以便部署到 App Engine,請在範例應用程式目錄的根層級建立名為 app.yaml 的新檔案,並加入下列內容:

entrypoint: bundle exec rackup --port $PORT
env: flex
runtime: ruby

設定 Rails 密鑰

在正式環境中部署 Rails 應用程式時,請將環境變數 SECRET_KEY_BASE 設為用於保護使用者工作階段資料的密鑰。這個環境變數會在 config/secrets.yml 檔案中讀取。

  1. 產生新密鑰。

    bundle exec rails secret
    
  2. 複製產生的密鑰。您會在下一個步驟中使用這組密鑰。

  3. 開啟先前建立的 app.yaml 檔案,並新增 env_variables 區段。env_variables 會在 App Engine 彈性環境的 production 環境中設定環境變數。您的 app.yaml 應如下例所示,其中 [SECRET_KEY] 應替換為您複製的密鑰。

    entrypoint: bundle exec rackup --port $PORT
    env: flex
    runtime: ruby
    
    env_variables:
      SECRET_KEY_BASE: [SECRET_KEY]

設定 App Engine 彈性環境應用程式

如果這是您第一次部署應用程式,則必須建立 App Engine 彈性環境應用程式,以便選取要執行 Rails 應用程式的區域。您可以進一步瞭解區域和可用區。

  1. 建立 App Engine 應用程式。根據預設,下列指令會建立兩個執行個體:

    gcloud app create
    
  2. 選取支援 Ruby 應用程式的 App Engine 彈性環境區域。

部署至 App Engine 彈性環境

執行下列指令來部署範例應用程式:

gcloud app deploy

等候更新完成通知訊息。這可能需要幾分鐘的時間。

存取已部署的 Rails 應用程式

  1. 如要擷取專案 ID,請執行 gcloud info。

  2. 在瀏覽器中輸入下列網址:

    https://PROJECT_ID.REGION_ID.r.appspot.com

    更改下列內容:

您會看到以下內容。

執行新 Rails 應用程式的螢幕截圖

這一次,您的要求是由在 App Engine 彈性環境中執行的 Rails 應用程式處理。

這項指令會如 app.yaml 所述部署應用程式,並將新部署的版本設為預設版本,導致該版本處理所有新流量。在部署應用程式的同時,平台會檢查應用程式是否可提供服務,在這段期間,您可能會收到幾則重複的訊息。這是正常的狀況。請等候應用程式更新完成通知訊息。

若您更新了應用程式,您可以輸入第一次部署應用程式時使用的指令來部署更新版本。新的部署作業會建立應用程式的新版本,並將其升級為預設版本。舊版應用程式及其相關聯的 VM 執行個體會保留下來。請注意,所有這些應用程式版本和 VM 執行個體都是計費資源。

讀取 App Engine 記錄

Rails 應用程式現已部署完畢,接下來您可能會想讀取記錄。您可以使用 Cloud de Confiance 控制台中的Logs Explorer,或使用 gcloud app logs read 讀取應用程式記錄檔。如要進一步瞭解如何使用 gcloud CLI 讀取記錄,請參閱這篇文章。

清除所用資源

完成教學課程後,您可以清除所建立的資源,這樣資源就不會繼續使用配額,也不會產生費用。下列各節將說明如何刪除或關閉這些資源。

刪除專案

如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。

刪除專案的方法如下:

  1. 前往 Cloud de Confiance 控制台的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源)

  2. 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
  3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

刪除 App Engine 版本

若要刪除應用程式版本:

  1. 在 Cloud de Confiance 控制台中,前往 App Engine 的「Versions」(版本) 頁面。

    前往「版本」

  2. 找出要刪除的非預設應用程式版本,然後勾選對應的核取方塊。
  3. 如要刪除應用程式版本,請依序按一下 和「Delete」(刪除)。

後續步驟