Saltar al contenido principal

dotenvy

  • Alternativa a dotenv
  • dotenvy se utiliza para poder acceder a las variables que se definen en el archivo .env
  • Se pueden obtener las variables del sistema (no del archivo .env) sin dotenvy

Instalación​

cargo add dotenvy
Cargo.toml
[dependencies]
dotenvy = "0.15.7"

Uso​

fn main() {
  // Cargar variables de entorno desde el archivo .env
  // Fallará si el archivo no existe o no se puede leer
  // ok() para evitar el error (ya que en producción no existe el archivo .env)
  dotenvy::dotenv().ok();
 
  // Manejo sencillo de erores (falla si no existe, como en un servidor)
dotenvy::dotenv().map_err(|_| "Error al cargar o persear el archivo .env")?;
 
  // Mnejo de algunos errores al cargar el archivo .env
  // Si funcionaria en producción
  // Pero es mejor leer el entorno, como una variable "ENVIRONMENT"
  // Y hacer el if para leer o no el archivo
  match dotenvy::dotenv() {
  Ok(_) => {}
  Err(dotenvy::Error::Io(error)) if error.kind() == ErrorKind::NotFound => {}
  Err(dotenvy::Error::LineParse(_, line_num)) => {
  return Err(format!("Error de parseo en el archivo .env, línea {line_num}").into());
}
Err(error) => return Err(error.into()),
}
 
  // Obtener variables de entorno (con o sin dotenvy) en tiempo de ejecución
  let server = env::var("SERVER").unwrap_or("127.0.0.1:3000".to_owned());
  let db_url = env::var("DATABASE_URL").expect("DATABASE_URL undefined");
 
  // env!
// Para comprobar las variables de entorno en tiempo de compilación
const CARGO_PKG_VERSION: &str = env!("CARGO_PKG_VERSION");

for (key, value) in env::vars() {
println!("{key}: {value}");
}
}