View Source mix eval (Mix v1.14.0)

Evaluates the given code within a configured application.

mix eval "IO.puts(1 + 2)"

The given code is evaluated after the current application has been configured, but without loading nor starting it. See mix run for running your application and scripts within a started application.

This task is designed to mirror the bin/my_app eval command in releases. It is typically used to invoke functions already defined within your application. For example, you may have a module such as:

defmodule MyApp.ReleaseTasks do
  def migrate_database do
    Application.load(:my_app)
    ...
  end
end

Once defined, you can invoke this function either via mix eval or via bin/my_app eval inside a release as follows:

$ mix eval MyApp.ReleaseTasks.migrate_database
$ bin/my_app eval MyApp.ReleaseTasks.migrate_database

As you can see, the current application has to be either explicitly loaded or started in your tasks, either by calling Application.load/1 or Application.ensure_all_started/1. This gives you full control over the application booting life-cycle. For more information, see the Application module.

This task is automatically re-enabled, so it can be called multiple times with different arguments.

Command-line options

  • --no-archives-check - does not check archives
  • --no-compile - does not compile even if files require compilation
  • --no-deps-check - does not check dependencies
  • --no-elixir-version-check - does not check the Elixir version from mix.exs
  • --no-mix-exs - allows the command to run even if there is no mix.exs