הרצת Rails 7 בסביבה גמישה של App Engine

כאן מוסבר איך מתחילים לפתח אפליקציות Ruby on Rails שפועלות בסביבה גמישה ב-App Engine. האפליקציות שאתם יוצרים פועלות באותה תשתית שמפעילה את כל המוצרים של Google, כך שאתם יכולים להיות בטוחים שהן יכולות להתרחב כדי לשרת את כל המשתמשים שלכם, בין אם יש כמה משתמשים או מיליונים.

המדריך הזה מניח שאתם מכירים את פיתוח האתרים ב-Rails. במדריך מוסבר איך לפרוס אפליקציית Rails חדשה.

המדריך הזה תומך ב-Ruby 3.0 ואילך, ודורש את הגרסה הזו.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. התקינו את ה-CLI של Google Cloud.

  7. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  8. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init

הגדרת הסביבה המקומית ל-Rails

כדי להגדיר את הסביבה המקומית לפיתוח ב-Rails, צריך:

  1. מתקינים את Ruby בגרסה 3.0 ואילך.

  2. מתקינים את ה-gem של Rails 7.

  3. מתקינים את ה-gem‏ Bundler.

לחלופין, אפשר להשתמש ב-Cloud Shell, שבו כבר מותקנים Ruby,‏ Rails ו-Google Cloud CLI.

מידע נוסף על התקנת Rails ויחסי התלות שלה זמין במדריך הרשמי Getting started with 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. כדי ליצור את התבנית לדף חדש, יוצרים בקר Rails חדש בשם WelcomeController עם פעולת 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. כדי לתאר את תצורת הפריסה של אפליקציה. אם הקובץ הזה לא קיים, ה-CLI של gcloud ינסה לנחש את הגדרות הפריסה. עם זאת, מומלץ לספק את הקובץ הזה כי 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 מגדיר משתני סביבה בסביבת production בסביבה הגמישה של App Engine. הקובץ 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. בוחרים אזור שתומך בסביבה הגמישה ב-App Engine לאפליקציות Ruby.

פריסה לסביבה גמישה ב-App Engine

מריצים את הפקודה הבאה כדי לפרוס את האפליקציה לדוגמה:

gcloud app deploy

מחכים להודעה שהעדכון הסתיים. התהליך יכול להימשך כמה דקות.

גישה לאפליקציית Rails שנפרסה

  1. כדי לאחזר את מזהה הפרויקט, מריצים את הפקודה gcloud info.

  2. בדפדפן, מזינים את כתובת ה-URL הבאה:

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

    מחליפים את מה שכתוב בשדות הבאים:

התוכן הבא מוצג.

צילום מסך של אפליקציית Rails חדשה שפועלת

הפעם, הבקשה מוגשת על ידי אפליקציית Rails שפועלת בסביבה גמישה של App Engine.

הפקודה הזו פורסת את האפליקציה כמו שמתואר ב-app.yaml ומגדירה את הגרסה שנפרסה כגרסת ברירת המחדל, כך שהיא תציג את כל התנועה החדשה. בזמן פריסת האפליקציה, יכול להיות שיופיעו כמה הודעות חוזרות בזמן שהפלטפורמה בודקת אם האפליקציה פועלת. זהו נוהל רגיל. מחכים להודעה שהעדכון של האפליקציה הסתיים.

אם מעדכנים את האפליקציה, אפשר לפרוס את הגרסה המעודכנת על ידי הזנת אותה הפקודה שבה השתמשתם כדי לפרוס את האפליקציה בפעם הראשונה. הפריסה החדשה יוצרת גרסה חדשה של האפליקציה ומקדמת אותה לגרסת ברירת המחדל. הגרסאות הישנות יותר של האפליקציה נשארות, וכך גם מכונות ה-VM שמשויכות אליהן. חשוב לזכור שכל גרסאות האפליקציה וכל המכונות הווירטואליות הן משאבים שחלים עליהם חיובים.

קריאת יומנים של App Engine

אחרי שפורסים את אפליקציית Rails, כדאי לקרוא את היומנים. אפשר לקרוא את יומני האפליקציה באמצעות Logs Explorer שבמסוף Google Cloud או באמצעות gcloud app logs read. מידע נוסף על קריאת יומנים באמצעות ה-CLI של gcloud

מחיקת משאבים

אחרי שמסיימים את המדריך, אפשר למחוק את המשאבים שנוצרו, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.

מחק את הפרויקט

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.

כדי למחוק את הפרויקט:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

מחיקה של גרסה ב-App Engine

כדי למחוק גרסת אפליקציה:

  1. במסוף Google Cloud , נכנסים לדף Versions של App Engine.

    כניסה לדף Versions

  2. מסמנים את התיבה שלצד גרסת האפליקציה שלא מוגדרת כברירת מחדל ושרוצים למחוק.
  3. כדי למחוק את גרסת האפליקציה, לוחצים על Delete.

המאמרים הבאים