סביבת זמן הריצה של Ruby מאפשרת להריץ את האפליקציה ב-App Engine בסביבת ארגז חול. במסמך הזה מוסבר על סביבת זמן הריצה של Ruby, כולל אילו כותרות מסופקות לקוד ומידע נוסף שיעזור לכם לפרוס את האפליקציה ב-App Engine.
מציינים את זמן הריצה של Ruby ל-App Engine בסביבה הרגילה בקובץ app.yaml:
runtime: rubyVERSION
VERSION הוא מספר הגרסה של Ruby MAJOR ו-MINOR. לדוגמה, כדי להשתמש בגרסת Ruby העדכנית ביותר, Ruby 4.0 (גרסת Preview), מציינים 40.
למידע על גרסאות נתמכות אחרות של Ruby ועל גרסת Ubuntu התואמת לגרסת Ruby שלכם, אפשר לעיין בלוח הזמנים של התמיכה בזמן ריצה.
גרסת Ruby
הגרסה העדכנית ביותר של Ruby שנתמכת היא 4.0 (תצוגה מקדימה). Ruby runtime משתמש בגרסה היציבה העדכנית ביותר שצוינה בקובץ app.yaml. App Engine מתעדכן אוטומטית לגרסאות חדשות של תיקוני באגים, אבל הוא לא מתעדכן אוטומטית לגרסה משנית.
לדוגמה, יכול להיות שהאפליקציה שלכם נפרסה ב-Ruby 2.6.0 ותעודכן אוטומטית לגרסה 2.6.1 בפריסה מאוחרת יותר, אבל היא לא תעודכן אוטומטית ל-Ruby 2.7.
תלויות
מידע נוסף על הגדרה וניהול של יחסי תלות זמין במאמר Specifying dependencies.
הפעלת האפליקציה
סביבת זמן הריצה מפעילה את האפליקציה באמצעות entrypoint שמוגדר ב-app.yaml. נקודת הכניסה צריכה להתחיל תהליך שמגיב לבקשות HTTP ביציאה שמוגדרת על ידי משתנה הסביבה PORT.
לדוגמה:
entrypoint: bundle exec rails server -p $PORT
רוב אפליקציות האינטרנט משתמשות בשרת אינטרנט שתומך ב-Rack, כמו Puma, Unicorn או Thin.
צריך להוסיף את השרת כתלות בקובץ התצורה Gemfile של האפליקציה. סביבת זמן הריצה תתקין את כל התלויות לפני הקריאה לנקודת הכניסה.
source "https://rubygems.org"
gem "rack"
gem "puma"
נקודת כניסה לדוגמה באמצעות puma לאפליקציית Rails:
entrypoint: bundle exec rails server Puma -p $PORT
דוגמה לנקודת כניסה באמצעות puma לכל אפליקציית Rack:
entrypoint: bundle exec rackup -s Puma -p $PORT
באפליקציות שיכולות לטפל בבקשות בלי שרת Rack, אפשר פשוט להריץ סקריפט Ruby:
entrypoint: bundle exec ruby app.rb
משתני סביבה
משתני הסביבה הבאים מוגדרים על ידי זמן הריצה:
| משתנה הסביבה | תיאור |
|---|---|
GAE_APPLICATION
|
המזהה של אפליקציית App Engine. המזהה הזה מתחיל בקידומת region code~, למשל e~ לאפליקציות שמוצבות באירופה. |
GAE_DEPLOYMENT_ID |
המזהה של הפריסה הנוכחית. |
GAE_ENV |
סביבת App Engine. ההגדרה היא standard. |
GAE_INSTANCE |
המזהה של המופע שבו השירות שלכם פועל כרגע. |
GAE_MEMORY_MB |
נפח הזיכרון שזמין לתהליך האפליקציה, ב-MB. |
GAE_RUNTIME |
סביבת זמן הריצה שצוינה בקובץ app.yaml. |
GAE_SERVICE |
שם השירות שצוין בקובץ app.yaml. אם לא מצוין שם שירות, ברירת המחדל היא default. |
GAE_VERSION |
תווית הגרסה הנוכחית של השירות. |
GOOGLE_CLOUD_PROJECT |
מזהה הפרויקט ב- Google Cloud שמשויך לאפליקציה. |
PORT |
היציאה שמקבלת בקשות HTTP. |
NODE_ENV (זמין רק בסביבת זמן ריצה של Node.js) |
מגדירים את הערך production כשהשירות נפרס. |
אפשר להגדיר משתני סביבה נוספים בקובץ app.yaml, אבל אי אפשר לשנות את הערכים שלמעלה, למעט NODE_ENV.
פרוטוקול HTTPS ושרתי proxy להעברה
App Engine מפסיק חיבורי HTTPS במאזן העומסים ומעביר בקשות לאפליקציה. באפליקציות מסוימות צריך לקבוע את כתובת ה-IP והפרוטוקול של הבקשה המקורית. כתובת ה-IP של המשתמש זמינה בכותרת הרגילה X-Forwarded-For. באפליקציות שנדרש בהן המידע הזה, צריך להגדיר את מסגרת האינטרנט כך שתיתן אמון ב-proxy.
מערכת קבצים
סביבת זמן הריצה כוללת ספרייה /tmp עם הרשאת כתיבה, ולכל שאר הספריות יש הרשאת קריאה בלבד. כתיבה ל-/tmp תופסת זיכרון מערכת. מידע נוסף זמין במאמרי העזרה בנושא TempDir וTempFile.
שרת מטא-נתונים
כל מופע של האפליקציה יכול להשתמש בשרת המטא-נתונים של App Engine כדי לשלוח שאילתות לגבי המופע והפרויקט.
אפשר לגשת לשרת המטא-נתונים דרך נקודות הקצה הבאות:
http://metadatahttp://metadata.google.internal
בקשות שנשלחות לשרת המטא-נתונים חייבות לכלול את כותרת הבקשה Metadata-Flavor: Google. הכותרת הזו מציינת שהבקשה נשלחה בכוונה מפורשת לאחזר ערכי מטא-נתונים.
בטבלה הבאה מפורטות נקודות הקצה שאליהן אפשר לשלוח בקשות HTTP למטא-נתונים ספציפיים:
| נקודת קצה של מטא-נתונים | תיאור |
|---|---|
/computeMetadata/v1/project/numeric-project-id |
מספר הפרויקט שהוקצה לפרויקט שלכם. |
/computeMetadata/v1/project/project-id |
מזהה הפרויקט שהוקצה לפרויקט. |
/computeMetadata/v1/instance/region |
האזור שבו המכונה פועלת. |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
כתובת האימייל של חשבון השירות שמוגדר כברירת מחדל ומוקצה לפרויקט. |
/computeMetadata/v1/instance/service-accounts/default/ |
מציגה את כל חשבונות השירות שמוגדרים כברירת מחדל בפרויקט. |
/computeMetadata/v1/instance/service-accounts/default/scopes |
רשימה של כל ההיקפים הנתמכים בחשבונות שירות שמוגדרים כברירת מחדל. |
/computeMetadata/v1/instance/service-accounts/default/token |
מחזירה את אסימון האימות שאפשר להשתמש בו כדי לאמת את האפליקציה שלכם ב-Google Cloud APIs אחרים. |
לדוגמה, כדי לאחזר את מזהה הפרויקט, שולחים בקשה אל http://metadata.google.internal/computeMetadata/v1/project/project-id.