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

גילוי סוג הקובץ ברובי

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

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

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

דוגמא לשימוש ב ruby-filemagic אפשר למצוא כאן.