~/VibeHandbook
PDF ฟรี

บท 05 · 05

ตัวแปรสภาพแวดล้อมและการตั้งค่า

ค่าบางอย่างเขียนลงในโค้ดของคุณไม่ได้: คีย์ลับ รหัสผ่านฐานข้อมูล ที่อยู่ของบริการหนึ่งๆ และค่าบางอย่างต้อง เปลี่ยน ไปตามที่ที่แอปทำงานอยู่ โค้ดที่คุณทดสอบบนแล็ปท็อป (สภาพแวดล้อม dev) ควรคุยกับฐานข้อมูลทดสอบ; แอปจริงที่ผู้ใช้ของคุณสัมผัส (สภาพแวดล้อม prod หรือ production) ต้องคุยกับฐานข้อมูลจริง — โดยใช้ โค้ดชุดเดียวกัน

คำตอบคือ ตัวแปรสภาพแวดล้อม (environment variables) (มักเรียกว่า "env vars"): ค่าที่มีชื่อซึ่งอยู่ นอก โค้ดและถูกส่งเข้าไปให้มันตอนที่มันทำงาน โค้ดบอกว่า "ขอ DATABASE_URL หน่อย" และสภาพแวดล้อมเป็นคนตัดสินใจว่าจะส่งค่าไหนให้

# A config file (e.g. .env) — values live here, not in the code

DATABASE_URL=postgres://localhost/myapp_dev
STRIPE_SECRET_KEY=sk_test_51H...     # dev = a test key
SEND_REAL_EMAILS=false               # don't email real users while testing

มีสองกฎที่จะช่วยคุณพ้นจากความปวดหัวจริงๆ:

  • คีย์ลับต้องไม่อยู่ในโค้ดเด็ดขาด สิ่งใดก็ตามที่อยู่ในโค้ดของคุณอาจจบลงด้วยการเปิดเผยต่อสาธารณะ (โดยเฉพาะในรีโพที่แชร์กัน) และคีย์การชำระเงินหรือรหัสผ่านฐานข้อมูลที่รั่วไหลออกไปคือเหตุฉุกเฉินตัวจริง คีย์ลับควรอยู่ในตัวแปรสภาพแวดล้อม ที่ไม่ถูกเก็บไว้ในระบบควบคุมเวอร์ชัน
  • Dev และ prod แตกต่างกัน ประเด็นคือโค้ดชุดเดียวกันทำงานถูกต้องในทั้งสองที่ เพราะสภาพแวดล้อม — ไม่ใช่โค้ด — เป็นคนตัดสินใจว่าจะใช้ฐานข้อมูลและคีย์ตัวไหน

โค้ดเดียวกัน สองบ้าน — ตัวแปรสภาพแวดล้อมคือสิ่งที่แตกต่างกัน:

        SAME CODE
       /         \
      ▼           ▼
   ┌─────────────────┐     ┌─────────────────┐
   │  DEV            │     │  PROD           │
   │  your laptop    │     │  hosting (cloud)│
   │  test database  │     │  real database  │
   │  test API key   │     │  live API key   │
   │  fake emails    │     │  real emails    │
   └─────────────────┘     └─────────────────┘
     only you see it         your users see it

อยากได้แบบออฟไลน์?

ดาวน์โหลดหนังสือทั้งเล่มเป็น PDF หรือ EPUB — ฟรี