ארכיון יומי: 29 יולי, 2010

ruby.eql? rails # false

אני מתכנת בשפת רובי מסוף 2006, ולאחרונה גיליתי שהיכולות רובי שלי עלו לפחות 4 רמות מהפעם האחרונה שבעצם שמתי לב ליכולות רובי שלי.

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

למשל יש לי בה framework מדהים לעבודה בטלפוניה, שיודע לעבוד עם אסטריסק ומתיימר לדעת לעבוד עם עוד כמה ממשקי טלפוניה שונים. העניין הוא שזה לא מימוש API כמו מרבית הספריות השונות בשוק בתחום האסטריסק, אלא יש לאותו framework ערכים מוספים רבים, אשר חוסכים ממני המון עבודה מצד אחד, ומצד שני אינם דורשים ממני להשתמש רק בגישה המקורית של הframework, אלא זה בנוי בצורה בה אני יכול לקחת כמעט כל רכיב ולהשתמש בו כ stand alone, דבר שמספק לי עוד כוח. ואם מוסיפים לו את העובדה שהוא יודע לדבר עם עוד הרבה סוגי framework אחרים (כולל rails) בנוסף, אפשר להבין מדוע אני בוחר בו מול כלים אחרים.

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

150.hours

אבל זה לא שייך לרובי, זה שייך ל Active Support של Rails. דוגמא של בעיה כזו שהתחרשה לי לאחרונה היתה לגרום למודול להכיל שדות בפנים שידברו עם כל המחלקות ששיכות לאותו מודול (מודול יכול להכיל בתוכו הרבה מחלקות או עוד מודולים וככה יוצרים namespace בקוד שיכול להיות מבוזר להרבה קבצים). הבעיה היא שמודול לא יכול להכיל משתנים. הוא יכול להכיל קבועים, מחלקות, מתודות ומודולים, אבל לא משתנים. אז הנה טריק נחמד שכן תהיה לו תמיכה בזה: להמשיך לקרוא