TL;DR
In the previous post, we presented how to run pure Erlang functions from Elixir. Today we explain three ways how to run Elixir script. This post is part of the functional language series, and it is based on the remarkable book Elixir In Action by Sasa Juric.
IEx
IEx is Elixir interactive shell. When you run in your favorite terminal iex
command, a BEAM instance is started. You immediately run Elixir expressions, like 1 + 1, or any Kernel module function. Be aware that expressions are interpreted, not compiled. So their execution is slower. Kernel module functions are already precompiled, so there is no performance loss. When you run your own module, you can compile it form iex
using useful c
alias.
For what purpose you can use iex
shell? I use it in my Phoenix application to experiment with the codebase. For example, when I need quickly to update a user record subscription expiration date. Or when I want to see the actual response when I try to find none existent Braintree transaction.
Elixir
elixir
the command is used to run a single elixir script:
elixir get_todays_stock_values.ex
What happens under the hood is this:
- BEAM instance is started, the script is compiled, and the .beam file is loaded into the memory. .beam file is not created on disk.
- Everything outside the module definition is interpreted. This is how to bootstraps script execution
- after the script is done, BEAM is stopped.
To distinguish such a script from Elixir code, we use exs
extension. Elixir Test Framework is interpreting test scripts, and you will learn that test scripts have exs
extension.
Here is a script example:
You can run it with:
elixir script_example.exs
Or with
elixir --no-halt script_example.exs
if your script is some kind of server. In this case, the BEAM instance will not be halted after script execution.
Mix
Mix tool helps you to manage the Elixir project.
mix new my_first_elixir_project
For now, just remember that this creates a folder with several Elixir files. For example, it creates the first test in the test folder.
You can run mix generated module with this:
mix run -e "IO.puts(MyFirstElixirProject.hello())"
Remember
You have three options to run Elixir code:
iex
elixir
mix
Comments are closed.