לדלג לתוכן

Ruby on Rails

מתוך ויקיפדיה, האנציקלופדיה החופשית
גרסה מ־21:52, 8 בינואר 2014 מאת Tzafrir (שיחה | תרומות) (ביטול גרסה 14994717 של 85.130.135.46 (שיחה) - הכתבה קיימת, אבל בקישור שונה)
הלוגו של Ruby On Rails

Ruby on Rails (ריילס (Rails) או רור (RoR) בקיצור) היא תשתית (Framework) כתיבת אפליקציות רשת הכתובה בשפת רובי (Ruby) כפרויקט קוד פתוח. ריילס מיישמת ארכיטקטורת מודל-תצוגה-בקרה (Model-View-Controller) ומיפוי אובייקטים לבסיס נתונים יחסי (ORM). עקרונותיה הם פשטות, אי-חזרה על קטעי קוד, שימוש במוסכמות במקום בקונפיגורציה ועל ידי כך מאפשרת כתיבת אפליקציות רשת בעזרת מעט מאוד שורות קוד יחסית לתשתיות ושפות אחרות[דרוש מקור].

עקרונות מנחים

העקרונות המנחים את ריילס הם - "אל תחזרו על עצמכם" (DRY - Don't repeat yourself), ו"מוסכמות ולא הגדרות" (Convention Over Configuration).

אל תחזרו על עצמכם

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

מוסכמות ולא הגדרות

על התוכניתן לבצע קונפיגורציה (הגדרות) רק כאשר ההגדרות אינן מתנהגות בהתאם ל"מוסכמות" של ריילס. לדוגמה: אם יש מודל בשם Post באפליקציה, אזי טבלת בסיס הנתונים בו ישמרו ערכי המודל תיקרא posts. אם התוכניתן חפץ לחרוג ממוסכמה זו, או אז עליו להגדיר את המיפוי החריג. גם מוסכמה זאת, קיימת בשפות פיתוח אחרות. כדוגמה, בערכת הפיתוח ג'ומלה, המתבססת על PHP, ישנם קיטים מוכנים רבים המאפשרים יכולות שונות (למשל, בלוג) שיוצרים טבלאות בבסיס הנתונים. אם רוצים לשנות את שם הטבלה, יש צורך להגדיר את המיפוי החריג.

היסטוריה

ריילס פותחה כשכבה נוספת על בסיס שפת Ruby על ידי David Heinemeier Hansson בעת שעבד על כלי לניהול פרויקטים בשם Basecamp. הגרסה הראשונה, אותה פיתח בזמנו הפנוי, שוחררה ביולי 2004 בכנס רובי-קון. גרסה 1.0 שוחררה ב-13 בדצמבר 2005.

מיפוי אובייקטים

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

myuser.name="Israel Israeli"
myuser.save

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

ארכיטקטורת מודל-תצוגה-בקרה

כמו תשתיות מודרניות דומות, גם רובי און ריילס בנויה בארכיטקטורת מודל-תצוגה-בקרה (MVC).

מודל

המודל הוא הנתונים עצמם. בריילס, כמו ביישומים אחרים שמשתמשים בבסיסי נתונים, מודל הוא אובייקט שמקביל לטבלה בבסיס הנתונים. מחלקות מודל יורשות מ ActiveRecord. ברגע שיורשים ממחלקה זו, המודל ממופה אוטומטית לטבלה בבסיס הנתונים, ויורשת פונקציות גישה וחיפוש נתונים בצורה אוטומטית. כל השדות המופיעים בטבלה מתמפים לפונקציות הבאה (accessors / getters and setters). בנוסף, ריילס מאפשרת הגדרת יחסים בין מודלים, כגון: has_many וbelongs_to. כך, אפשר להגדיר שספר (book) שייך למחבר (author) וריילס תממש את כל השאר: חיפוש על פי הקישור, גישה לנתונים על ידי פקודות כגון: mybook.author=someauthor. זאת ועוד, ניתן להגדיר מאמתים (Validators) אשר מוודאים בזמן ריצה כי הנתונים המסופקים עומדים בקריטריונים המוגדרים, כגון אורך מינימלי, המצאות הערך בטווח מסוים וכדומה.

תצוגה

ב-MVC "תצוגה" הינו החלק האחראי על תצוגת המודל לפי התנאים שמוגדרים על ידי ה-"בקר". באפליקציות רשת, חלק זה כמעט ואין בו קוד, אלא בעיקר HTML בו משובצים ערכים מהמודל או מהבקר (בדומה ל-JSP ו-PHP - אך ללא כתיבת קוד). לכל מתודה (Method) בבקר יש לכתוב קוד תצוגה קצר. עימוד האתר נעשה במקום אחר, כך ניתן לשנות את מבנה ועימוד האתר בנפרד מפלט פעולות ספציפי.

בקרה

הבקר מגיב לבקשות מהמשתמש, וקורא לביצוע לוגיקת האפליקציה (Business Logic). לאחר מכן הוא מקשר את תוצאות הריצה עם תבנית התצוגה. מתודות של הבקר מופעלות על ידי המשתמש על ידי קריאה להם מהדפדפן. כתוצאה מכך, ה-URLים של אפליקציית רשת שנכתבה בריילס הינם פשוטים והגיוניים, כך URL כגון: http://myblog.com/creation/show/15 קורא לבקר בשם creation, מפעיל מתודה בשם show ומעביר לה פרמטר 15 המזהה למשל מאמר בלוג מספר 15.

בנוסף, לריילס קיימת מערכת "פיגומים" (Scaffolding) המייצרת בצורה אוטומטית את כל דפי האפליקציה הנחוצים להוספה, מחיקה ושינוי של כל טבלאות הנתונים של האפליקציה.

רכיבים נוספים

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

ראו גם

קישורים חיצוניים

לקריאה נוספת