Environment & Konfigurasi
Penjelasan
Aplikasi production butuh nilai konfigurasi yang berbeda antar environment (development, testing, production) — misalnya credential database, secret key, atau URL layanan eksternal. Vapor menyediakan Environment.get("NAMA_VAR") untuk membaca variabel environment sistem operasi, biasanya dipanggil di configure.swift saat aplikasi pertama kali disiapkan. Pola umumnya: baca nilai dengan Environment.get("DATABASE_URL"), beri nilai fallback yang masuk akal untuk development lokal lewat ?? "nilai-default", lalu gunakan hasilnya untuk mengonfigurasi koneksi database, App.environment juga dipakai untuk cabang logic berbeda per environment, misalnya app.environment == .production untuk menonaktifkan logging verbose.
Contoh Konsep
import Fluent
import FluentPostgresDriver
import Vapor
public func configure(_ app: Application) throws {
let dbHost = Environment.get("DATABASE_HOST") ?? "localhost"
let dbUser = Environment.get("DATABASE_USERNAME") ?? "vapor"
let dbPassword = Environment.get("DATABASE_PASSWORD") ?? "password"
let dbName = Environment.get("DATABASE_NAME") ?? "vapor_database"
app.databases.use(.postgres(
hostname: dbHost,
username: dbUser,
password: dbPassword,
database: dbName
), as: .psql)
if app.environment == .production {
app.logger.logLevel = .warning
}
}
// Di terminal (development): export DATABASE_HOST=127.0.0.1
// Nilai rahasia seperti $DATABASE_PASSWORD sebaiknya TIDAK ditulis
// langsung di kode, cukup lewat environment variable server.
Praktikum
Tulis kode yang membaca Environment.get("APP_SECRET") dengan default "secret-dev-saja", lalu simpan ke konstanta appSecret dan cetak lewat app.logger.info("Secret dimuat").
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan pernah commit file .env berisi credential production ke git — gunakan .env.example sebagai template tanpa nilai asli, dan atur variabel environment sungguhan lewat panel hosting/server, bukan file yang ikut ter-versionkan.