dotenv-rs / dotenv

Library to help supply environment variables in testing and development
MIT License
557 stars 88 forks source link

Potentially confusing examples in documentation #42

Open codesections opened 4 years ago

codesections commented 4 years ago

Thanks very much for this crate.

The examples in the README and the documentation all show using dotenv::dotenv().ok() or dotenv::from_filename("custom.env").ok(). The .ok() causes dotenv to silently ignore errors in loading the environment file. Perhaps that should have been obvious to me, but it wasn't, especially when I first started using the crate a few months ago. Given how explicit Rust typically is with errors, this wasn't the behavior I expected. I've learned my lesson, but wondered if others might also have been confused.

I understand not wanting to have full error handling in examples, but the most common way I've seen this handled in the Rust ecosystem is to use expect. Would you be open to changing the documentation examples to something like dotenv::dotenv().expect("Could not open .env file")? If so, I'd be happy to submit a PR.

ZoeyR commented 4 years ago

I would be more than happy to accept a PR changing this in the examples.

Plecra commented 4 years ago

The dotenv function will return an error so long as it can't find a .env file. That isn't generally considered an error state for programs loading environment variables like this, since the file is just one way to pass environment variables into the function. I'd say dotenv().ok() is typically the right way to use the crate.

Definitely in support of improving the documentation to avoid this misconception, but I don't think expect is the right solution.

Edit: #57 has a reasonable solution to this