Application.app_dir

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

Specs

app_dir(app()) :: String.t()

Gets the directory for app.

This information is returned based on the code path. Here is an example:

File.mkdir_p!("foo/ebin")
Code.prepend_path("foo/ebin")
Application.app_dir(:foo)
#=> "foo"

Even though the directory is empty and there is no .app file it is considered the application directory based on the name "foo/ebin". The name may contain a dash - which is considered to be the app version and it is removed for the lookup purposes:

File.mkdir_p!("bar-123/ebin")
Code.prepend_path("bar-123/ebin")
Application.app_dir(:bar)
#=> "bar-123"

For more information on code paths, check the Code module in Elixir and also Erlang's :code module.

Specs

app_dir(app(), String.t() | [String.t()]) :: String.t()

Returns the given path inside app_dir/1.

If path is a string, then it will be used as the path inside app_dir/1. If path is a list of strings, it will be joined (see Path.join/1) and the result will be used as the path inside app_dir/1.

Examples

File.mkdir_p!("foo/ebin")
Code.prepend_path("foo/ebin")

Application.app_dir(:foo, "my_path")
#=> "foo/my_path"

Application.app_dir(:foo, ["my", "nested", "path"])
#=> "foo/my/nested/path"