לבנות אתר מאפס ברובי און ריילס #4

ברוכים הבאים לפרק הרביעי בסדרה, לבנות אתר מאפס ברובי און ריילס.
במידה ופיספסתם את הפרקים קודמים, אתם מוזמנים לצפות ולהתעדכן: פרק 1, פרק 2, פרק 3.

בפרק הזה יצרנו את המודלים הבאים:

  1. Todo
  2. Comment

קישרנו בין המודלים שלנו בצורה שתתאים ללוגיקה העסקית העתידית.

קישורים:

כרגיל, אשמח לתגובות, דיון, הערות, הארות וכדומה.

את הוידאו המקורי אפשר להוריד מכאן (האיכות טובה הרבה יותר)

איך עובדים בגוגובוט?

אתמול (27.02) עשיתי הרצאה בשנקר במפגש של Ruby Underground.

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

התגובות שקיבלתי על ההרצאה היו פשוט מדהימות, בכול אמצעי מדיה אפשרי – כולל ברשתות החברתיות.

העליתי את ההרצאה ל-Speaker Deck  כדי שכולם יוכלו להתרשם, גם אלו שלא נכחו בהרצאה.

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

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

לבנות אתר מאפס ברובי און ריילס #1

לפני מספר חודשים התחלתי סדרה של סקרינקאסטים שעוסקים בבניית אתר באמצעות רובי און ריילס ממש מאפס – אתר מאפס ברובי און ריילס #1 (סקרינקאסט) ואתר מאפס ברובי און ריילס #2 (סקרינקאסט).

מסיבות שונות ומשונות הסדרה הופסקה ממש בתחילתה.

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

קצת על הסדרה

הסדרה שונה ממה שאתם מכירים בדרך כלל באינטרנט. כלומר, זה לא אדם אחד, אלא שני אנשים.

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

הפרק הראשון:

מומלץ מאוד לצפות במסך מלא (רזולוציה ההקלטה היא 1920*1200)

Show Notes

קוד מקור

https://github.com/KensoDev/project-management-example

פידבק בבקשה

נשמח לתגובות, הערות, הארות וכול דבר אחר שיש לכם לומר, נשמח לשנות דברים לסקרינקאסטים הבאים אם אתם חושבים שמתאים, דברו איתנו!

הכנת המק שלך לעבודה עם רובי און ריילס

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

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

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

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

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

בת'כלס, זה סקריפט שנבע מעצלנות אבל למי אכפת :-) (אל תגלו לאף אחד!)

את הסקריפט, שהוא בסה"כ שורת Shell יחידה אפשר למצוא כאן: gogobot/laptop – GitHub.

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

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

 

כמו תמיד – הערות, הארות, רעיונות לשיפור, אפשר להגיב כאן, אפשר לפתוח Issue ב-Github, מה שבא לכם.

תוציאו הכל (כמעט) לקוד פתוח

את הפוסט הבא קראתי ממש כשיצא.

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

כל מה שלא נוגע ללוגיקה הישירה ולמהות של החברה, יוצא ל-Open Source (קוד פתוח), כל מה שאנחנו נוגעים בו ויכול לתרום לפרויקט המקורי, יוצא גם הוא ל-Open Source.

למשל…
כאשר התחלנו לעבוד עם Resque ממש היה לנו חסר פיצ'ר שיכול להוסיף משימות ל-Queue, מאוד דומה ל-Delayed Jobs.
לכן, כתבנו כזה, הדבר הראשון שעשינו אחרי שכתבנו, היה להוציא את זה ל-Open Source.

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

קישור לפוסט של טום למטה.

Open Source (Almost) Everything.

סקרינקאסט Ajax עם מוטולס ורובי און ריילס (חלק 1)

בסקרינקאסט הבא אני עובר על יצירת פרויקט חדש ברובי און ריילס.

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

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

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

אשמח כמובן לראות תגובות (גם דרך הפייסבוק)

גם לייקים יתקבלו בברכה

Ajax on rails using Mootools [HD] from Avi Tzurel on Vimeo.

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

לינקים שימושיים למפתחים #1

פוסט ראשון בסדרה, בפוסטים האלה אני אפרסם לינקים שימושיים למפתחים (בעיקר למפתחי רובי און ריילס ומפתחי Web)

iAd Producer – למי שרוצה לקחת חלק ולפרסם iAds ברשת של אפל, אפל הוציאו Producer מיוחד שמאפשר ליצור מודעות כאלה בצורה של Wysiwyg והפלט של העורך הזה הוא Html5 וCss3 שכול המכשירים של אפל יודעים לקרוא, בינהם הiPhone וכמובן הiPad.

Tower – אני משתמש במק, מאז שאני משתמש במק אני משתמש לSource Control ב-Git כמעט באופן בלעדי (מלבד פרויקט או שניים שקיבלתי בירושה). הרבה זמן השימוש ב-Git הרגיש לינוקסאי מדי, יותר מדי Command שקשה מאוד לזכור את קובן אבל החלק שבאמת היה לי קשה עם Git הוא לעשות Diff, לראות היסטוריה וכדומה.
בדיוק כאן נכנסת לתמונה האפליקציה המעולה הזו, אני משתמש בה באופן קבוע בשביל לראות היסטוריה של Commits, לשחזר קטעי קוד ולעשות Merge בין ענפים)

צילום מסך Git Tower

צילום מסך Git Tower

סיור באתר באמצעות jQuery – אמנם לאחרונה אני עושה שימוש בMootools בכול הפרויקטים החדשים שלי אבל זה Tutorial נחמד שמראה איך אפשר ליצור סיור באתר ולהניח Tooltips במקומות הנכונים עם הסבר של מה בדיוק החלק הזה עושה. לאפליקציות עם אינטראקציה רבה זה בהחלט יכול להיות מאוד שימושי.

סיור וירטואלי באתר

סיור וירטואלי באתר

5 דברים שלא ידעתם על jQuery – שוב, אם אתם עושים שימוש ב-jQuery יש כאן אוסף של 5 דברים עם אוסף של קטעי קוד מאוד שימושיים, אני יכול לומר שתור משתמש jQuery לשעבר שחלק מהדברים גם חידשו לי קצת.

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

MongoDB Gotchas - אם אתם משתמשים בריילס וב-MongoDB יש כאן טיפים יקרים מפז.

25 טיפים לVim – אוסף של 25 טיפים בין אם כפוסטים בבלוג או כסקרינקאסטים (שאני מאוד אוהב) לשימוש בVim.

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

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

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

אני חושב באמת ובתמים שהכניסה הזו (הקונספט שלה) היא זו שאשמה בכך שאין יותר מתכנתי 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

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