查看源代码 mix eval (Mix v1.16.2)
在配置的应用程序中评估给定代码。
$ mix eval "IO.puts(1 + 2)"
给定的代码在当前应用程序配置后进行评估,但不会加载或启动它们(某些应用程序可能在启动过程中加载,但不能保证)。有关在已启动的应用程序中运行应用程序和脚本,请参见 mix run
。
此任务旨在镜像发布版本中的 bin/my_app eval
命令。它通常用于调用应用程序中已定义的函数。例如,您可能有一个类似于以下内容的模块
defmodule MyApp.ReleaseTasks do
def migrate_database do
Application.load(:my_app)
...
end
end
定义后,您可以通过 mix eval
或通过发布版本中的 bin/my_app eval
来调用此函数,如下所示
$ mix eval MyApp.ReleaseTasks.migrate_database
$ bin/my_app eval MyApp.ReleaseTasks.migrate_database
如您所见,当前应用程序必须在您的任务中显式加载或启动,方法是调用 Application.load/1
或 Application.ensure_all_started/1
。这使您可以完全控制应用程序启动生命周期。有关更多信息,请参见 Application
模块。
此任务会自动重新启用,因此可以多次使用不同的参数调用它。
命令行选项
--no-archives-check
- 不检查存档--no-compile
- 即使文件需要编译,也不编译--no-deps-check
- 不检查依赖项--no-elixir-version-check
- 不检查 mix.exs 中的 Elixir 版本--no-mix-exs
- 即使没有 mix.exs,也允许命令运行