ללמוד ריילס כמו זומבי

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

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

נכנסים לעולם הריילס?

משיטוט ברשת מצאתי משהו מדליק שאני חושב ששווה לחלוק אותו ומי שרק נכנס לעולם הריילס ימצא אותו מועיל מאוד.
חברת Envy Labs שמפתחת אפליקציות בריילס וגם אחראית לכול ה Video Tutorials באתר הרשמי של Ruby On Rails הוציאה סדרת Video Tutorials חדשה שנקראת Rails For Zombies מדובר על סדרה של Video Tutorials טובים מאוד ואיכותיים מאוד שעוזרים להכנס לעולם של ריילס יותר בקלות מלעבור על מאמרים באורך 20-30 עמודים.

הנה צילום מסך מתוך האתר, אפשר לראות שלא מדובר בVideo סטנדרטי כמו RailsCasts או כול אחד אחר, הגישה היא קצת אחרת :-)

Screen shot 2010-12-07 at 8.40.00 AM

מחיקת מודל מפרויקט Rails

במהלך עבודה על פרויקט חדש, ביצעתי generation של מודל חדש. מיד אחרי שלחצתי Enter הבנתי שעשיתי שטות ובעצם אני לא צריך את המודל הזה.

זו הפקודה שהרצתי להוספת המודל

script/generate model contact user_id:integer type:integer

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

הדרכים לביצוע מחיקת מודל מפרויקט Rails

היו לי שתי דרכים לעשות את זה, אחד לעשות את זה דרך Git והשנייה לבדוק אם יש לריילס פקודה שיודעת לבצע את זה.

כמו שחשבתי, יש לריילס דרך לבצע את זה בקלות רבה (אם עדיין לא ביצעתם migration לבסיס הנתונים כמובן)

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

script/destroy model contact

פתרון לבאג I Follow בCucumber עם Capybara

בזמן עבודה על אפליקציה חדשה וכתיבת טסטים נתקלתי בבעיה שלקח לי זמן למצוא לה פתרון, אז חשבתי להקל על קהל הקוראים שלי ולכתוב פוסט על הפתרון (כתבתי גם באנגלית – A soltion for the “I Follow” bug with cucumber and Capybara)

זה הסנריו שכתבתי בשביל לבדוק מחיקה של פרויקט מתוך דף הבית של החשבון:

  Scenario: Deleting a project from the main page
    Given I am on the account home page
	When I follow "Delete Project"
	Then I should see "Your project has been deleted"

וזו השגיאה שהתקבלה בזמן ריצת הTest

#
undefined local variable or method `node' for #<Capybara::Driver::Node tag="a" ...
#

והנה גם צילום מסך שלה שיהיה ברור יותר
Screen shot 2010-11-23 at 5.36.24 PM
לאחר גירודי פדחת רבים וארוכים ובדיקה בכול הIssues הקיימים כמעט בRepository מצאתי לכך פתרון.

בקובץ env.rb ישנה שורה שצריך לעשות לה comment out, פשוט לסמן אותה בהערה ולהריץ את הטסט שוב, זה פתר לי את הבעיה

require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript

מקווה שאתם תשרפו פחות זמן ממני בזכות הפוסט הזה.