How to Use the 'iex' Command in Elixir (with Examples)
IEx, short for Interactive Elixir, is a powerful tool used by Elixir developers for testing and evaluating Elixir code interactively. It provides a REPL (Read-Eval-Print Loop) environment that allows developers to experiment with code snippets quickly, evaluate expressions, and perform real-time debugging. The command itself, iex
, is highly flexible and offers various options to enhance its default functionalities. Leveraging these options can significantly improve development efficiency and debugging prowess. Below, we delve into specific use cases, showcasing the versatility and application of the iex
command with practical examples.
Use case 1: Start an interactive session
Code:
iex
Motivation:
An interactive session with iex
is the simplest and most direct way of entering the Elixir environment. It allows developers to test snippets of Elixir code, explore the languageās features, and quickly check assumptions about language behavior without needing to write a full-fledged program or compile code files. It is particularly useful during learning or while prototyping ideas.
Explanation:
iex
: This command starts the Interactive Elixir shell, providing a prompt where Elixir expressions can be executed directly. Upon runningiex
, the user is presented with an environment to enter commands, evaluate them, and observe results immediately.
Example output:
Erlang/OTP 23 [erts-11.1] [source] [64-bit] ...
Interactive Elixir (1.11.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 1 + 1
2
Use case 2: Start a session that remembers history
Code:
iex --erl "-kernel shell_history enabled"
Motivation: When working on complex problems or testing sequences of interrelated commands, it’s immensely beneficial to have access to previous command history. Enabling shell history in an IEx session allows developers to revisit past commands, making it easier to retry, modify, or learn from previous work without retyping. This feature can dramatically streamline the work process by reducing redundancy and enhancing productivity.
Explanation:
iex
: Starts the Interactive Elixir shell.--erl
: This flag allows users to pass parameters directly to the Erlang virtual machine that underpins the Elixir environment."-kernel shell_history enabled"
: This particular option instructs the Erlang kernel to enable shell history, thereby allowing commands entered in a session to be stored and browsed.
Example output:
Erlang/OTP 23 [erts-11.1] [source] [64-bit] ...
Interactive Elixir (1.11.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> IO.puts("Hello, World!")
Hello, World!
:ok
iex(2)> ^Up Arrow^
IO.puts("Hello, World!")
Hello, World!
:ok
Use case 3: Start and load Mix project files
Code:
iex -S mix
Motivation: Starting IEx with a Mix project loaded is an efficient method for interacting with and testing the components of an Elixir project. The Mix build tool is central to dealing with Elixir projects, providing a suite of tasks for creating, compiling, and testing code. By loading Mix at the start of an IEx session, developers gain direct access to their project’s modules, aliases, and dependencies without requiring additional setup. This setup is particularly advantageous for debugging or implementing quick fixes within the context of a project.
Explanation:
iex
: Initiates the Interactive Elixir shell.-S
: A flag that specifies a script, heremix
, to run before starting the shell.mix
: The build tool for Elixir projects that handles the management of project files and dependencies.
Example output:
Erlang/OTP 23 [erts-11.1] [source] [64-bit] ...
Interactive Elixir (1.11.3) - press Ctrl+C to exit (type h() ENTER for help)
Interactive Elixir - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> MyModule.my_function()
:ok
Conclusion:
IEx is an essential tool for Elixir developers, and understanding its various use cases can significantly enhance your coding workflow. Whether you’re exploring the basics of Elixir, working on complex sequences requiring history tracking, or integrating with complex Mix projects, IEx provides the flexibility and power necessary for efficient development. These examples demonstrate its capabilities and adaptability, establishing it as an indispensable resource for anyone working within the Elixir ecosystem.