דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. משתני סביבה, קובץ ENV, או קובץ JSON

משתני סביבה, קובץ ENV, או קובץ JSON

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 4 כותבים 214 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • D מנותק
    D מנותק
    davidnead
    השיב לyossiz ב נערך לאחרונה על ידי
    #1

    @yossiz אמר ביצירת פרויקט nodeJS שיבקש מהמשתמש קונפיג בהרצה הראשונה:

    כבר ענו, אבל מכיון שכבר כתבתי את התשובה שלי אוסיף אותה לערימה...

    @צדיק-תמים
    א) הזכרת בשאלה ששם הקובץ יהיה config.env, זה מעלה בי חשד שאתה מתכנן שזה יהיה בפורמט של קבצי .env. אני מציע להיצמד ל-json כי זה פורמט שנתמך בצורה מובנית ב-JS וקל לכתוב אותו לקובץ.

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

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

    יש לזה יתרון נוסף, אתה יכול לקבל ממני קוד מוכן שעושה את זה 😉

    צדיק תמיםצ תגובה 1 תגובה אחרונה
    1
    • צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      השיב לdavidnead ב נערך לאחרונה על ידי צדיק תמים
      #2

      @davidnead דווקא לא הלכתי בעקבות שום מדריך... נראה לי אתה מחליף עם הnodemon.json...
      לתת קונפיג מוכן ושהמשתמש ישנה אני יכול גם בenv.... ושם זה אף יותר קל, כי לפי מה שהבנתי הגדרת משתנה סביבה בשם הזה דורסת את ההגדרה בקובץ...
      אני משתמש בקבצי env. של dotenv, בהתחלה עשיתי json ועשיתי לו require, ואז החלפתי לזה...

      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
      טיפים

      D תגובה 1 תגובה אחרונה
      4
      • D מנותק
        D מנותק
        davidnead
        השיב לצדיק תמים ב נערך לאחרונה על ידי
        #3

        @צדיק-תמים אמר ביצירת פרויקט nodeJS שיבקש מהמשתמש קונפיג בהרצה הראשונה:

        @davidnead דווקא לא הלכתי בעקבות שום מדריך... נראה לי אתה מחליף עם הnodemon.json...
        לתת קונפיג מוכן ושהמשתמש ישנה אני יכול גם בenv.... ושם זה אף יותר קל, כי לפי מה שהבנתי הגדרת משתנה סביבה בשם הזה דורסת את ההגדרה בקובץ...
        אני משתמש בקבצי env. של dotenv, בהתחלה עשיתי json ועשיתי לו require, ואז החלפתי לזה...

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

        אני מבין שהתשובות פה לא מספקות עבורך. תוכל לפרט למה? למה היית מצפה ומה אתה רוצה להשיג?

        צדיק תמיםצ yossizY chvC 3 תגובות תגובה אחרונה
        0
        • צדיק תמיםצ מנותק
          צדיק תמיםצ מנותק
          צדיק תמים
          השיב לdavidnead ב נערך לאחרונה על ידי צדיק תמים
          #4

          @davidnead יתרון שיש בהגדרה במשתני סביבה זה שאפשר לעשות את זה עם הapp.json של הרקו ואז יהיה אפשר להרים אינסטנס של זה בלחיצת כפתור, כשהממשק של הרקו מבקש את המשתני סיסבה. את זה לא ידעתי כשכתבתי את הפוסט כאן, ולכן חיפשתי דרך אחרת להגדרת קונפיג ידידותית.
          למעשה אולי מה שכתבו פה יהיה שימושי לי בעתיד... 🙂
          כי אני מבין שזה לא הולך יחד - הjson והמשתני סביבה.

          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
          טיפים

          תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לdavidnead ב נערך לאחרונה על ידי yossiz
            #5

            @davidnead זה סוג של מוסכמה לאפשר הגדרה דרך משתני סביבה. ויש סיבות טובות. עיין: https://12factor.net/config
            ואין בשימוש ב-dotenv שום חסרון כל עוד הקובץ לקריאה בלבד. ברגע שאתה מתחיל לדבר על קינפוג דינאמי דרך ממשק שיכתוב לקובץ, אז כדאי לשקול שוב.

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            תגובה 1 תגובה אחרונה
            4
            • chvC מנותק
              chvC מנותק
              chv
              השיב לdavidnead ב נערך לאחרונה על ידי
              #6

              @davidnead אמר ביצירת פרויקט nodeJS שיבקש מהמשתמש קונפיג בהרצה הראשונה:

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

              אלא מה? לחשוף אותו בקוד?
              זה אחד הדברים שצריכים להיות במשתני סביבה.
              זה יכול להיות מסיבות אבטחה - וגם מסיבות של הבדלים בין סביבות פיתוח/ריצה.
              השימוש בקונפיג על קובץ .env הוא פשוט פאטץ' על גבי הצורך בהגדרה של משתני סביבה שאתה כן רוצה משום מה, להכניס ישירות לקוד.
              או שזה פשוט נעשה לך ממשק נוח להגדרת משתני סביבה בסביבת פיתוח.
              וזה לא נכנס לגיט, כמובן!!

              בלוג | מייל

              D תגובה 1 תגובה אחרונה
              5
              • D מנותק
                D מנותק
                davidnead
                השיב לchv ב נערך לאחרונה על ידי
                #7

                @chv אמר ביצירת פרויקט nodeJS שיבקש מהמשתמש קונפיג בהרצה הראשונה:

                @davidnead אמר ביצירת פרויקט nodeJS שיבקש מהמשתמש קונפיג בהרצה הראשונה:

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

                אלא מה? לחשוף אותו בקוד?

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

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

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

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

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

                dovidD תגובה 1 תגובה אחרונה
                0
                • צדיק תמיםצ מנותק
                  צדיק תמיםצ מנותק
                  צדיק תמים
                  כתב ב נערך לאחרונה על ידי צדיק תמים
                  #8

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

                  Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                  טיפים

                  תגובה 1 תגובה אחרונה
                  0

                  בא תתחבר לדף היומי!
                  • התחברות

                  • אין לך חשבון עדיין? הרשמה

                  • התחברו או הירשמו כדי לחפש.
                  • פוסט ראשון
                    פוסט אחרון
                  0
                  • דף הבית
                  • קטגוריות
                  • פוסטים אחרונים
                  • משתמשים
                  • חיפוש
                  • חוקי הפורום