הרצת 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. כדי ליצור את ה-scaffolding של דף חדש, יוצרים בקר 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 ומגדירה את הגרסה שנפרסה כגרסת ברירת המחדל, כך שהיא תציג את כל התנועה החדשה. במהלך הפריסה של האפליקציה, יכול להיות שתראו כמה הודעות חוזרות בזמן שהפלטפורמה בודקת אם האפליקציה פועלת. זהו נוהל רגיל. ממתינים להודעה על השלמת העדכון של האפליקציה.

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

קריאת יומנים של 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.

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