Application.get_env

You're seeing just the function get_env, go back to Application module for more information.
Link to this function

get_env(app, key, default \\ nil)

View Source

Specs

get_env(app(), key(), value()) :: value()

Returns the value for key in app's environment.

If the configuration parameter does not exist, the function returns the default value.

Important: if you are reading the application environment at compilation time, for example, inside the module definition instead of inside of a function, see compile_env/3 instead.

Important: if you are writing a library to be used by other developers, it is generally recommended to avoid the application environment, as the application environment is effectively a global storage. For more information, read our library guidelines.

Examples

get_env/3 is commonly used to read the configuration of your OTP applications. Since Mix configurations are commonly used to configure applications, we will use this as a point of illustration.

Consider a new application :my_app. :my_app contains a database engine which supports a pool of databases. The database engine needs to know the configuration for each of those databases, and that configuration is supplied by key-value pairs in environment of :my_app.

config :my_app, Databases.RepoOne,
  # A database configuration
  ip: "localhost",
  port: 5433

config :my_app, Databases.RepoTwo,
  # Another database configuration (for the same OTP app)
  ip: "localhost",
  port: 20717

config :my_app, my_app_databases: [Databases.RepoOne, Databases.RepoTwo]

Our database engine used by :my_app needs to know what databases exist, and what the database configurations are. The database engine can make a call to get_env(:my_app, :my_app_databases) to retrieve the list of databases (specified by module names). Our database engine can then traverse each repository in the list and then call get_env(:my_app, Databases.RepoOne) and so forth to retrieve the configuration of each one.