我有一个伞项目(my_app)像这样:
??? README.md
??? apps
? ??? app_one
? | ??? mix.exs
? ??? app_two
| | ??? mix.exs
? ??? ...
??? config
??? mix.exs
我想获取当前正在运行的应用程序的名称,
例如: app_one, app_two.
当我使用:
Mix.Project.get.project[:app]
我总是得到主项目名称my_app.
我怎样才能做到这一点?
您可以使用模块所属的应用程序:application.get_application/1.如果您__MODULE__作为第一个参数传递,您将获得当前模块所属的应用程序.
$ cat apps/a/lib/a.ex
defmodule A do
def hello do
:application.get_application(__MODULE__)
end
end
$ cat apps/b/lib/b.ex
defmodule B do
def hello do
:application.get_application(__MODULE__)
end
end
$ iex -S mix
iex(1)> A.hello
{:ok, :a}
iex(2)> B.hello
{:ok, :b}
Run Code Online (Sandbox Code Playgroud)