להתגלגל עם Ruby On Rails
מאת זהר ארד 5 ביולי 2009. 7 תגובות. שייך לקטגוריות אינטרנט, תוכנה
רובי און ריילס ( Ruby-On-Rails, ריילס בקיצור) היא תשתית פיתוח לאתרים ויישומים אינטרנטים.אחד היתרונות בשימוש בתשתית פיתוח הוא שלא צריך להתחיל מאפס. התשתית מספקת כלים לעבודה מול מסדי נתונים, מנגנוני cache, דואר אלקטרוני ושאר פטישים ומזמרות. זהר ארד מסביר לנו מתי כדאי לבחור בריילס ומסכם : מה יש לא לאהוב, הרי רק דברים טובים שמתי בפנים?!.
רובי און ריילס ( Ruby-On-Rails, ריילס בקיצור) היא תשתית פיתוח לאתרים ויישומים אינטרנטים (Web framework) בשפת רובי, אשר פותחה על-ידי דייויד היינמאייר-הנסון, ושוחררה כפרוייקט קוד פתוח בפברואר 2005.
ריילס מיישמת ארכיטקטורת הפיתוח לפי מודל MVC בו שכבת הנתונים (Model) ושכבת התצוגה (View) נפרדות ומנוהלות על-ידי שכבה מגשרת (Controller), וכן פילוסופיית פיתוח בעלת שני נדבכים מרכזיים:
Convention over Configuration
על המפתח לציין רק את ההיבטים ביישום שחורגים מן המוסכמות, כמו שם חריג של טבלה במסד הנתונים.
Don't Repeat Yourself
מידע או פעולה מסויימת בקוד ייכתבו במקום אחד בלבד.
Opinionated Programming
אחד ההיבטים המעניינים אודות ריילס הינו יישום עיקרון הנקרא תכנות דעתני (באנגלית, Opinionated Programming), כלומר, למפתחי ריילס היתה ויש דעה מוצקה על האופן בו ריילס צריכה לעבוד. אם דעה זו אינה עולה בקנה אחד עם צרכי המפתח עליו לשקול להשתמש בתשתית אחרת.
אז למה בעצם ריילס?
אחד היתרונות בשימוש בתשתית פיתוח הוא שלא צריך להתחיל מאפס. התשתית מספקת כלים לעבודה מול מסדי נתונים, מנגנוני cache, דואר אלקטרוני ושאר פטישים ומזמרות. לריילס יש באמתחתה מספר כלים שימושיים במיוחד שעוזרים לא רק להאיץ את הפיתוח אלא גם להתרכז בעיקר (כתיבת קוד) ולא בתפל (קונפיגורציות, אינטגרציות ושאר דונה-גרציות).
מוסכמות
אחד ההיבטים החזקים של ריילס הינו העבודה לפי מוסכמות אשר מאפשרת למפתח להתרכז בכתיבת היישום ולא במחשבות סרק. למעשה, כל עוד לא נכתב קוד המגדיר אחרת, התשתית תדאג שהקוד יעבוד, כל עוד המפתח ידאג לעבוד לפי המוסכמות.
בנוסף, עבודה לפי מוסכמות מקצרת משמעותית את זמני הפיתוח (וכמות השערות הלבנות) ומקלה על עבודה של מספר מפתחים על אותו פרוייקט מכיוון שהיא מקנה שפה משותפת ועקרונות עבודה ברורים.
אוטומציה
לרשות המפתח עומד אוסף תסריטים הרצים משורת הפקודה ומאפשרים ביצוע פעולות שכיחות בצורה קלה ואחידה כמו:
• יצירת קבצים חדשים מסוג model, view, controller
• הוספה אוטמטית של קבצי הגדרות בעת יצירת model חדש המאפשרים הוספה ומחיקה של טבלאות במסד הנתונים בקלות
• התקנת תוספים ביישום
• כתיבה והרצה של Unit Testing
Scaffolding
ריילס מאפשרת יצירה אוטומטית של ממשקי הזנת מידע למסד הנתונים (מעין מערכת ניהול תוכן בסיסית ביותר הנקראת Scaffold) היכולים לשמש בסיס לכתיבת מערכת ניהול תוכן מורכבת יותר, או להזנת מידע בסיסי למסד הנתונים בעת הפיתוח. הדבר שימושי במיוחד בעת בדיקה ראשונית של רכיבי Model חדשים מכיוון שבאמצעות פקודה אחת ניתן ליצור את ממשק הזנת הנתונים ל-Model החדש ולבדוק את תקינות הקוד.
טיפול נכון בשגיאות
טיפול נכון בשגיאות הינו אחד הנדבכים המרכזיים בכתיבת תוכנה, כי בין אם נרצה ובין אם לאו, שגיאות קורות.
בנוסף למנגנוני טיפול השגיאות של רובי, ריילס מאפשרת טיפול נוח בשגיאות הקורות בעת עבודה מול מסד הנתונים הכולל גם ממשק נוח לעבודה ב Transactions, וכן ממשק העברת הודעות שגיאה בצורה אחידה בין רכיבים שונים ביישום (למשל מה-Model דרך ה-Controller ל-View). למפתח לא נותר אלא להטמיע ולהתריע – בלי תרוצים (ובלי מאמץ מיוחד).
עבודה מהנה וקהילה תומכת
אחד ההיבטים המייחדים את רובי כשפת פיתוח מאחיותיה הינו השאיפה של כותבי השפה להפוך אותה לשפה מהנה לתכנות. אמנם כל אדם לדעותיו והרגליו, אך מנסיוני הצנוע, רובי משלבת את אחידות התחביר של ג'אווה ו AS3 עם הנהירות של פייתון לכדי תערובת נעימה ומזמינה. אם נוסיף לכך את העובדה שרובי מתפארת בהיותה שפה מונחת-עצמים אמיתית ושלמה (אכן, כל דבר ברובי הוא אובייקט), הרי שלבטח יש פה משהו ששווה להתנסות בו (או כמאמר הפולנים מה יש לא לאהוב, הרי רק דברים טובים שמתי בפנים?!).
הקהילה של ריילס כמוה כריילס עצמה – דעתנית אך יודעת לעזור היכן שצריך. בנוסף לאתרים הרשמיים של רובי ושל ריילס, עומדים לרשות המפתח שלל מדריכים מקוונים, בלוגים, פורומים וספרים. בנוסף, קיים מאגר מקוון של "אבנים יקרות" (ruby gems), המכיל מגוון תוספים לרובי עצמה או ליישומי ריילס ספציפיים.
מילות סיכום
מפאת קוצר היריעה בחרתי לתת סקירה קצרה של ייתרונותיה היחסיים של ריילס כתשתית פיתוח לעומת תשתיות אחרות (ויש רבות וראויות) בתקווה לגרות את סקרנותו של הקורא. אולם, כמו בכל דבר, אין טוב בלי רע וכמובן, שריילס אינה מתאימה לכל משימה ולכל מתכנת. המלצתי היחידה היא לנסות ולהחליט לבד. כמו כן ראוי לציין שהטקסט שנכתב משקף את ניסיוני האישי עם ריילס כתשתית פיתוח ונכתב במטרה להאיר עיניים ולעורר דיון, ולא במטרה להעליב או לחטוא לאמת האישית של אף אחד.
מקורות מידע נוספים אודות רובי וריילס:
אתר הבית של רובי
אתר הבית של ריילס מאגר התוספים המקוון של רובי
מדריכי תכנות בריילס
רובי און ריילס ישראל

יהיה נחמד להרחיב את הפוסט הזה לסדרה של פוסטים שבהם סוקרים תשתיות פופלריות לבניית אתרים.
כדי להתחייס לנקודות הבאות:
- סביבת פיתוח (IDE), לדעתי בשורה התחתונה זה הדבר הכי חשוב.
- ביצועיים וסקלאבליות.
- קלות הפיתוח וקלות התחזוקה (בדרך כלל אחד בא על חשבון השני)
- עבודה מול בסיסי נתונים.
- חברות אכסון שתומכות בתשתית.
כדאי להתייחס גם לטכנולוגיות \ ספריות של צד הלקוח.
אני זורק שמות לאויר בלי סדר מסויים שכדאי להתייחס אליהם:
j2ee
jdo
jpa
hibernate
jquery
prototype
dojo
GWT
זה נושא מענין כי עושה רושם שיש היום הרבה יותר פתרונות ממה שצריך וקשה לבחור.
כל הכבוד על המאמר
אודה לכם אם תוסיפו קישור לאתר ריילס הישראלי שהולך ומתפתח לאט לאט
http://www.rubyonrails.org.il
שם תמצאו קישורים גם לפורום וIsrael.rb בגוגל
בימים אלו קיבלנו אישור לתרגם את הספר Learn to Progran לעברית
בהצלחה,
ארז בן שוהם
אני שמח שנהנתם מהמאמר ומודה לכם על תגובותיכם.
בכוונתי להמשיך ולפרסם מאמרים בנושא בהם אוכל לכלול התייחסות לבקשותיכם :)
בברכה
זהר
אם יש לכם עוד אתרים מעניינים שנכתבו בו אשמח לשמוע ולראות
שח
בנוסף כדאי לדעת - אתר ריילס הישראלי נבנה כפלטפורמה לכותבים מרובים
למעשה כל אחד יכול לפתוח לעצמו בלוג ופשוט לכתוב... בכל נושא ועניין
פוסטים הקשורים לריילס מתפרסמים גם בעמוד הראשי של האתר בנוסף לפרסומם בבלוג האישי של הכותב
באפשרותך להקים לעצמך בלוג ב 60 שניות
המערכת בנויה בריילס
לעמוד ההרשמה:
http://www.rubyonrails.org.il/posts/1
אני ממתין למאמר הבא שלך,
בהצלחה,
שח מט
לרשימת אתרים שנבנו בריילס => http://rubyonrails.org/applications
ארז
פינגבאק: להתגלגל עם Ruby On Rails - חלק ב' | Newsgeek
פינגבאק: django– תשתית פיתוח לפרפקציוניסטים (חלק א') | Newsgeek