מתחילים לפתח אפליקציות Ruby on Rails שפועלות בסביבה הגמישה של App Engine. האפליקציות שאתם יוצרים פועלות על אותה תשתית שמפעילה את כל מוצרי Google, כך שאתם יכולים להיות בטוחים שהן יכולות להתרחב כדי לשרת את כל המשתמשים שלכם, בין אם יש כמה משתמשים או מיליונים.
במדריך הזה אנחנו מניחים שאתם מכירים את פיתוח האינטרנט ב-Rails. במדריך הזה מוסבר איך להגדיר את Cloud SQL ל-MySQL עם אפליקציית Rails חדשה. אפשר גם להשתמש במדריך הזה כהפניה להגדרת אפליקציות Rails קיימות לשימוש ב-Cloud SQL ל-MySQL.
המדריך הזה תומך ב-Ruby 3.0 ומעלה, ונדרשת גרסה כזו.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- 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.
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
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.
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init
הכנת Cloud SQL למכונת MySQL
כדי להגדיר Cloud SQL למכונת MySQL לצורך המדריך הזה:
יוצרים מכונה מהדור השני. במדריך הזה, שם המכונה הוא
rails-cloudsql-instance.יוצרים מסד נתונים במופע. במדריך הזה, השם של מסד הנתונים של הייצור הוא
cat_list_production.
הגדרת הסביבה המקומית ל-Rails
כדי להגדיר את הסביבה המקומית ללימודים:
מידע נוסף על התקנת Rails ויחסי התלות שלה זמין במדריך הרשמי Getting started with Rails.
אחרי שתשלימו את הדרישות המוקדמות, תוכלו ליצור ולפרוס אפליקציית Rails באמצעות Cloud SQL ל-MySQL. בקטעים הבאים מוסבר איך להגדיר אפליקציה, להתחבר ל-Cloud SQL ל-MySQL ולפרוס אותה.
יצירת אפליקציה חדשה להצגת חתולים
מריצים את הפקודה
rails newכדי ליצור אפליקציית Rails חדשה. האפליקציה הזו מאחסנת רשימה של חתולים ב-Cloud SQL ל-MySQL.rails new cat_sample_appיכול להיות שתצטרכו גם להתקין ספריות mysql עבור mysql gems באמצעות פקודה כמו בדוגמה הבאה:
sudo apt-get install libmysqlclient-devעוברים אל הספרייה שמכילה את אפליקציית Rails שנוצרה.
cd cat_sample_app
הרצת האפליקציה באופן מקומי
כדי להריץ את אפליקציית Rails החדשה במחשב המקומי:
מפעילים שרת אינטרנט מקומי:
bundle exec bin/rails serverפותחים דפדפן אינטרנט ועוברים לכתובת http://localhost:3000/.
באפליקציה לדוגמה מוצג הלוגו של Rails עם הגרסאות של Rails ו-Ruby.
צור פיגום לרשימה של חתולים
יוצרים scaffolding למשאב בשם Cat שמשמש ליצירת רשימה של חתולים עם השם והגיל שלהם.
יצירת ה-scaffolding.
bundle exec rails generate scaffold Cat name:string age:integerהפקודה יוצרת מודל, בקר ותצוגות למשאב
Cat.invoke active_record create db/migrate/20230922063608_create_cats.rb create app/models/cat.rb invoke test_unit create test/models/cat_test.rb create test/fixtures/cats.yml invoke resource_route route resources :cats invoke scaffold_controller create app/controllers/cats_controller.rb invoke erb create app/views/cats create app/views/cats/index.html.erb create app/views/cats/edit.html.erb create app/views/cats/show.html.erb create app/views/cats/new.html.erb create app/views/cats/_form.html.erb create app/views/cats/_cat.html.erb invoke resource_route invoke test_unit create test/controllers/cats_controller_test.rb create test/system/cats_test.rb invoke helper create app/helpers/cats_helper.rb invoke test_unit invoke jbuilder create app/views/cats/index.json.jbuilder create app/views/cats/show.json.jbuilder create app/views/cats/_cat.json.jbuilderפותחים את הקובץ
config/routes.rbכדי לראות את התוכן שנוצר.מוסיפים את
root 'cats#index'לקובץ.שומרים את הקובץ וסוגרים אותו.
בודקים את אפליקציית Rails לפי ההוראות.
שימוש ב-Cloud SQL ל-MySQL עם App Engine
Cloud SQL ל-MySQL הוא שירות מנוהל של מסד נתונים שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים של MySQL ב- Google Cloud. אפשר להשתמש ב-Cloud SQL באפליקציית Rails כמו בכל מסד נתונים רלציוני אחר.
הגדרת Cloud SQL ל-MySQL
כדי להתחיל להשתמש ב-Cloud SQL עם אפליקציית Rails בסביבת ייצור:
מוסיפים את אבני החן
mysql2ו-appengineלקובץGemfile.bundle add mysql2 bundle add appengineקובץ ה-Rails
Gemfileמכיל את הרשומות הנוספות הבאות שלgem:כדי להגדיר את אפליקציית Rails להתחבר ל-Cloud SQL, פותחים את הקובץ
config/database.yml. מוצגות ההגדרות הבאות של מסד נתונים סטנדרטי עבור SQLite:מגדירים את שם החיבור של מופע Cloud SQL עבור סביבת הייצור של App Engine.
מאחזרים את שם החיבור של המכונה.
gcloud sql instances describe rails-cloudsql-instanceמעתיקים את הערך שליד
connectionName.
משנים את ההגדרה של מסד הנתונים של הייצור לערכים הבאים:
database.ymlכאשר:
-
[YOUR_MYSQL_USERNAME]מייצג את שם המשתמש שלכם ב-MySQL. -
[YOUR_MYSQL_PASSWORD]מייצג את הסיסמה שלכם ל-MySQL. -
[YOUR_INSTANCE_CONNECTION_NAME]מייצג את שם החיבור של המופע שהעתקתם בשלב הקודם.
-
אפליקציית Rails מוגדרת עכשיו לשימוש ב-Cloud SQL כשפורסים אותה בסביבה הגמישה של App Engine.
פריסת האפליקציה בסביבה הגמישה של App Engine
בסביבה הגמישה של App Engine נעשה שימוש בקובץ שנקרא app.yaml כדי לתאר את הגדרות הפריסה של אפליקציה. אם הקובץ הזה לא קיים, ה-CLI של gcloud ינסה לנחש את הגדרות הפריסה.
עם זאת, כדאי להגדיר את הקובץ כדי לספק את הגדרות התצורה הנדרשות למפתח הסודי של Rails ול-Cloud SQL.
כדי להגדיר את אפליקציית הדוגמה לפריסה ב-App Engine, יוצרים קובץ חדש בשם app.yaml בתיקיית השורש של אפליקציית Rails ומוסיפים את השורות הבאות:
מגדירים את המפתח הסודי של Rails בקובץ app.yaml
כשפורסים אפליקציית Rails בסביבת production, צריך להגדיר את משתנה הסביבה SECRET_KEY_BASE עם מפתח סודי כדי להגן על נתוני סשן של משתמשים. משתנה הסביבה הזה נקרא מהקובץ config/secrets.yml באפליקציית Rails.
יוצרים מפתח סודי חדש.
bundle exec bin/rails secretמעתיקים את המפתח הסודי שנוצר.
פותחים את הקובץ
app.yamlשיצרתם קודם ומוסיפים קטעenv_variables. הקובץenv_variablesמגדיר משתני סביבה בסביבה הגמישה של App Engine. קובץapp.yamlצריך להיראות כמו בדוגמה הבאה, כשמחליפים את[SECRET_KEY]במפתח הסודי שלכם.
הגדרת המכונה של Cloud SQL בקובץ app.yaml
בשלב הבא, מגדירים את הסביבה הגמישה של App Engine כך שתשתמש במופע Cloud SQL שצוין. לשם כך, מציינים את שם החיבור של מופע Cloud SQL בקובץ ההגדרות app.yaml.
פותחים את הקובץ
app.yamlומוסיפים קטע חדש בשםbeta_settings.מגדירים פרמטר מקונן
cloud_sql_instancesעם שם החיבור של המופע כערך.התג
app.yamlאמור להיראות כך:
יצירת אפליקציה בסביבה גמישה של App Engine
אם זו הפעם הראשונה שאתם פורסים אפליקציה, אתם צריכים ליצור אפליקציה בסביבה גמישה של App Engine ולבחור את האזור שבו אתם רוצים להריץ את אפליקציית Rails.
יוצרים אפליקציית App Engine.
gcloud app createבוחרים אזור שתומך בסביבה גמישה של App Engine לאפליקציות Ruby. מידע נוסף על אזורים ותחומים
פריסת גרסה חדשה
לאחר מכן, פורסים גרסה חדשה של אפליקציית Rails שמתוארת בקובץ app.yaml בלי להפנות תנועה מהגרסה הנוכחית שמוגדרת כברירת מחדל.
קומפילציה מראש של נכסי Rails.
bundle exec bin/rails assets:precompileאחרי שהנכסים מסיימים את ההידור, פורסים גרסה חדשה של האפליקציה.
gcloud app deploy --no-promoteתהליך הפריסה עשוי להימשך כמה דקות. מחכים להודעת הצלחה. אפשר לראות את הגרסאות שפרסתם ברשימת הגרסאות של App Engine.
אחרי שמבצעים פריסה של הגרסה החדשה, אם מנסים לגשת לגרסה החדשה הזו, מוצגת הודעת השגיאה הבאה כי לא בוצעה העברה של מסד הנתונים.

מתן ההרשאה הנדרשת ל-Gem appengine
לאחר מכן, נותנים לחשבון השירות של Cloud Build גישה להרצת העברות של מסד נתונים בסביבת ייצור באמצעות ה-gem appengine.
רשימת הפרויקטים הזמינים.
gcloud projects listבפלט, מוצאים את הפרויקט שבו רוצים להשתמש כדי לפרוס את האפליקציה ומעתיקים את מספר הפרויקט.
מוסיפים חבר חדש למדיניות IAM של הפרויקט לתפקיד
roles/editorכדי להריץ העברות של מסדי נתונים. מחליפים אתPROJECT_IDבמזהה הפרויקט ב-Google Cloud ואתPROJECT_NUMBERבמספר הפרויקט שהעתקתם בשלב הקודם.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/editor
העברת מסד נתונים של Rails
העברות של מסדי נתונים ב-Rails משמשות לעדכון הסכימה של מסד הנתונים בלי להשתמש ישירות בתחביר SQL. בשלב הבא מעבירים את מסד הנתונים של cat_list_production.
Gem appengine מספק את משימת Rake appengine:exec להרצת פקודה מול הגרסה האחרונה של האפליקציה שפרסתם בסביבה הגמישה של App Engine לייצור.
העברת מסד הנתונים
cat_list_productionשל Cloud SQL ל-MySQL בסביבת ייצור.bundle exec rake appengine:exec -- bundle exec rake db:migrateהפלט אמור להיראות כך:
---------- EXECUTE COMMAND ---------- bundle exec rake db:migrate Debuggee gcp:787021104993:8dae9032f8b02004 successfully registered == 20230922063608 CreateCats: migrating ======================================= -- create_table(:cats) -> 0.0219s == 20230922063608 CreateCats: migrated (0.0220s) ============================== ---------- CLEANUP ----------כדי לאמת את העברת מסד הנתונים, עוברים אל:
VERSION-dot-PROJECT_ID.appspot.com
אם הפריסה בוצעה בהצלחה, מוצגות ההודעות הבאות:

העברת תנועה לגרסה חדשה
לבסוף, מפנים את התנועה לגרסה החדשה שהופעלה באמצעות הפקודה הבאה:
gcloud app services set-traffic default --splits VERSION=1
הגרסה החדשה של האפליקציה זמינה עכשיו בכתובת:
https://PROJECT_ID.appspot.com
קריאת יומנים של App Engine
אחרי שפורסים את אפליקציית Rails, יכול להיות שתרצו לקרוא את היומנים. אפשר לקרוא את יומני האפליקציה באמצעות Logs Explorer שנמצא במסוף Google Cloud .
מידע נוסף על קריאת יומנים באמצעות ה-CLI של gcloud
לפנות משאבים
אחרי שמסיימים את המדריך, אפשר למחוק את המשאבים שנוצרו, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.
מחק את הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת גרסה של App Engine
כדי למחוק גרסת אפליקציה:
- במסוף Google Cloud , נכנסים לדף Versions של App Engine.
- מסמנים את התיבה שלצד גרסת האפליקציה שלא מוגדרת כברירת מחדל ושרוצים למחוק.
- כדי למחוק את גרסת האפליקציה, לוחצים על Delete.
מחיקת מכונה של Cloud SQL
כדי למחוק מכונה של Cloud SQL:
- נכנסים לדף Instances במסוף Google Cloud .
- לוחצים על השם של מכונת ה-SQL שרוצים למחוק.
- כדי למחוק את המכונה, לוחצים על Delete ופועלים לפי ההוראות.