Rails 2.3

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

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

השינוי העיקרי של Rails 2.3 הוא בכך שהעבירו כמעט כל רכיב REST ב Rails לעבוד עם Rack במקום השימוש במודול ה CGI הרגיל. זה מתחיל מ script/server אשר עכשיו יכול להתממשק לכל רכיב Rack בעצם, אבל זה הרבה יותר מזה, כי גם ה dispatcher וגם העבודה עם עוגיות ו session עברו להשתמש ב Rack. העבירו הרבה רכיבים להיות תוכניות תיווך (middleware) , מעבודה על הנעילות דרך ActiveRecord (הכלי שמספק לנו ORM) וזה חילחל עד לכל הרכיבים שמתעסקים בrender כדוגמת עבודה עם XML, JSON, HTML וכו'.

המעבר הזה ל rack גם שינה חלק גדול מה API והמגישה של Rails .

עוד תוספת חדשה היא בצורת העבודה עם אפליקציות rails שהן בעצם plugin. עכשיו גם ספריית ה app נטענת אוטומטית וגם הגדרות ה routes.rb נטענות אוטומטית.

נוספו עוד מדריכים שונים ל Rails ובנוסף לאתר המרכזי יש עוד כמה אתרים חדשים שמפרסמים מדריכים ל rails. וגם וויקי מחודש קם.

הגרסה החדשה עובדת עכשיו עם Ruby 1.9.1 (גרסת הפיתוח של Ruby 2).

עוד שינוי משמעותי הוא תוספות חדשות ל ActiveRecord:

  • הגדרת תכונות מקוננות – אם יש לנו 2 טבלאות מקושרות אחת עם השנייה, אז כל שינוי בכל טבלה ישפיע גם על הטבלה השנייה, כולל הגדרה מה לא לכלול בשינויים
  • טרנזאקציות מקוננות – אפשרות לשלוט בתת טרנזאקציה בלי להשפיע על טרנזאקצית האב, כך שניתן לעשות למשל rollback לטרנזאקצית בן בלי השפעה על האב
  • מרחב דינאמי – אפשרות להרחיב חיפוש של מתודות שהרחבנו
  • מרחב ברירת מחדל – אפשר לבצע סידור של רשומות בררירת מחדל
  • צבירת תהליכים – אפשר לבצע פעולות על מספר רשומות רב עם פחות זיכרון. העבודה עם batch זהה ל find עם כמה פעולות שהוא אינו תומך בהם.
  • תמיכה בהוספת 2 תנאים ל callback – שימוש בו זמני גם של if וגם של unless עבור ה callback
  • נוספה תמיכה לפרמטר having בצורה טבעית
  • במידה ועובדים עם mysql ניתן להגדיר לו reconnect

יש עוד שינויים ל ActiveRecord שלא הזכרתי כאן.

נוסף שינוי מעניין ל render : ניסיון טוב יותר להבין מה רוצים מ render ללא ציון במפורש מה אנחנו רוצים ממנו לעשות. הצורך בלהגיד את סוג ה mime כן נשאר וצריך להגדיר אותו בהתאם לצורך.

השם של ActionController השתנה מ application.rb ל application_controller.rb

נוסף תחביר טבעי עבור HTTP Digest Authentication

routes.rb השתנה:

  • formatted_ עבר להיות פרמטר של הפונקציה במקום helper, ועכשיו צריך לציין פרמטר :format
  • ניתן להוסיף עוד קבצי route גם דרך קוד ולא רק בהגדרות של routes.rb

השימוש במודול Mime הוסיף את הפונקציה ~= להוספת הגדרות mime חדשות

respond_to עבר אופטימיזציה ומתפקד יותר בצורה ש Merb עובד בה (חלק מהמעבר של Merb לתוך rails).

תמיכה טובה יותר במטמון

תמיכה טובה יותר בבין לאומיות שונוסף ב Rails 2.2.2. עכשיו קבצים יכולים לקבל את שם השפה כחלק מהשם שלהם, למשל main.he.html עבור עברית, main.de.html עבור גרמנית וכו'. הגדרת השפה הפעילה תגרום לטעינת הקובץ המתאים.

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

תמיכה בrender מקונן של מידע לפי הגדרות של ה view

את הרשימה הרשמית של השינויים (כולל שינויים נוספים אשר לא כללתי כאן), ניתן למצוא כאן.

2 מחשבות על “Rails 2.3

  1. ik_5 מאת

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

    דבר שני לא כל השינויים והתוספות של Rails קיימים בDJango. כל העבודה עם תרגום ב Django עד כמה שאני יודע עובדת בצורה אחרת. עד לגרסה 2.2.2 גם Rails וגם DJango היו עובדים בצורה זהה -> לעבוד עם gnu gettext (דבר שעדיין קיים גם היום), אבל עכשיו אפשר לעבוד בצורה טבעית יותר לשפה בשביל לתרגם את התוכנית שאתה כותב באמצעות Rails, דבר שיש אנשים (כמו מאיר) שלא אוהבים, ואני חושב שזה אחד הרעיונות היותר טובים שהגיעו לאחרונה מבית Rails.

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s