在伞项目中获取应用程序名称

fay*_*fay 2 elixir

我有一个伞项目(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.
我怎样才能做到这一点?

Dog*_*ert 7

您可以使用模块所属的应用程序: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)