View Source mix run (Mix v1.10.4)

Starts the current application and runs code.

mix run can be used to start the current application dependencies, the application itself, and optionally run some code in its context. For long running systems, this is typically done with the --no-halt option:

mix run --no-halt

Once the current application and its dependencies have been started, you can run a script in its context by passing a filename:

mix run my_app_script.exs arg1 arg2 arg3

Code to be executed can also be passed inline with the -e option:

mix run -e "DbUtils.delete_old_records()" -- arg1 arg2 arg3

In both cases, the command-line arguments for the script or expression are available in System.argv/0.

Before doing anything, Mix will compile the current application if needed, unless you pass --no-compile.

If for some reason the application needs to be configured before it is started, the --no-start option can be used and you are then responsible for starting all applications by using functions such as Application.ensure_all_started/1. For more information about the application life-cycle and dynamically configuring applications, see the Application module.

If you need to pass options to the Elixir executable at the same time you use mix run, it can be done as follows:

elixir --sname hello -S mix run --no-halt

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

Command-line options

  • --eval, -e - evaluates the given code
  • --require, -r - executes the given pattern/file
  • --parallel, -p - makes all requires parallel
  • --preload-modules - preloads all modules defined in applications
  • --no-compile - does not compile even if files require compilation
  • --no-deps-check - does not check dependencies
  • --no-archives-check - does not check archives
  • --no-halt - does not halt the system after running the command
  • --no-mix-exs - allows the command to run even if there is no mix.exs
  • --no-start - does not start applications after compilation
  • --no-elixir-version-check - does not check the Elixir version from mix.exs