mix

Mix es una herramienta que forma parte de Elixir que sirve para gestionar un proyecto, manteniendo múltiples archivos .ex con los distintos módulos que forman nuestro programa. También nos permiten compilar aplicaciones para distribuirlas, instalar nuevas dependencias, y mantener una suite de tests para comprobar el estado de nuestro proyecto.

Mix es una herramienta fundamental que viene incluida con Elixir y que nos acompaña en el desarrollo de proyectos reales. A diferencia de ejecutar archivos sueltos en el entorno interactivo iex, Mix nos permite trabajar con proyectos completos, que pueden contener varios módulos, y gestionar todo de forma organizada y eficiente. Esto es especialmente útil cuando queremos compilar, empaquetar y distribuir nuestras aplicaciones, ya sea para ejecutarlas en una máquina virtual BEAM, dentro de un contenedor Docker o en cualquier otro entorno.

Una de las grandes ventajas de Mix es su capacidad para manejar dependencias externas. Por ejemplo, si necesitamos trabajar con JSON, en lugar de implementar nuestro propio parser, podemos aprovechar librerías ya existentes que están disponibles en el repositorio oficial de paquetes de Elixir, ex.pm. Mix nos facilita la instalación y gestión de estas dependencias dentro de nuestro proyecto, evitando tener que hacerlo manualmente y asegurando que todo funcione correctamente.

Además de gestionar dependencias, Mix nos ayuda a ejecutar tareas comunes como formatear código, lanzar tests y compilar nuestro proyecto. Estas funcionalidades son esenciales para mantener un flujo de trabajo profesional y ordenado. Incluso para aspectos más avanzados, como la gestión de árboles de supervisión en Elixir, Mix es la herramienta adecuada para controlar y automatizar estos procesos.

Para empezar a usar Mix, lo primero es asegurarnos de que está instalado y accesible desde la línea de comandos. Al escribir mix en la terminal, veremos una lista de subcomandos disponibles, como mix new, mix help o mix local. En proyectos más complejos, como los creados con Phoenix, Mix puede extenderse con comandos adicionales específicos para ese entorno.

El comando que más nos interesa al principio es mix new, que nos permite crear un nuevo proyecto. Por ejemplo, si ejecutamos:

mix new hola

se creará un directorio llamado hola con una estructura básica que incluye carpetas como lib y test, además de archivos importantes como mix.exs y README.md.

El archivo mix.exs es el corazón de nuestro proyecto. Es un script de Elixir que contiene una función llamada project, la cual devuelve una lista de palabras clave con información esencial como el nombre de la aplicación, la versión, la versión mínima de Elixir requerida y las dependencias. Este archivo es donde configuramos los detalles que definen nuestro proyecto y sus necesidades.

Dentro de la carpeta lib encontraremos un archivo llamado hola.ex, que contiene un módulo de ejemplo con una función simple:

defmodule Hola do
  def hello do
    :world
  end
end

Este módulo es un punto de partida que podemos modificar para añadir la funcionalidad que deseemos. En proyectos reales, aquí es donde colocaremos todos los módulos y archivos .ex que conforman nuestro código.

La carpeta test está destinada a alojar nuestros tests. Aunque no es obligatorio escribir tests en Elixir, es una práctica muy recomendable. Los tests son programas que verifican que nuestro código funciona correctamente, comprobando que las funciones devuelven los resultados esperados. Por ejemplo, podríamos escribir un test que asegure que la función que suma dos números devuelve el resultado correcto. Si alguna prueba falla, nos alertará de que hay un problema en nuestro código.

Para trabajar con nuestro proyecto en modo interactivo, no basta con ejecutar iex directamente, ya que no cargará nuestro proyecto ni sus dependencias. En su lugar, debemos usar:

iex -S mix

Este comando inicia una sesión interactiva de Elixir que primero compila y carga nuestro proyecto gestionado por Mix. Así, podremos llamar a funciones definidas en nuestros módulos, como Hola.hello(), y obtener los resultados esperados.

Al ejecutar iex -S mix, también veremos que se crea un directorio llamado _build, donde Mix guarda los archivos compilados y otros datos internos necesarios para el correcto funcionamiento y despliegue de nuestra aplicación.

En resumen, Mix es la herramienta que nos permite dar el salto de escribir código suelto a desarrollar proyectos completos en Elixir, facilitando la gestión de dependencias, la compilación, la ejecución de tests y la interacción con nuestro código de forma organizada y profesional. A partir de aquí, todo nuestro trabajo con Elixir girará en torno a Mix y sus funcionalidades.

Lista de reproducción
  1. 1
    mix
    10 minutos
  2. 2
    Documentando código: comentarios, docs y moduledocs
    10 minutos
  3. 3
    Atributos de módulo
    9 minutos
  4. 4
    Dependencias
    12 minutos
  5. 5
    Un ejemplo práctico de módulo útil
    13 minutos
  6. 6
    Alias e import
    10 minutos
  7. 7
    Sobre las macros, require y use
    11 minutos
  8. 8
    Typespecs (parte 1, usando tipos básicos)
    10 minutos
  9. 9
    Typespecs (parte 2, tipos propios y t())
    11 minutos
  10. 10
    Comportamientos
    11 minutos
  11. 11
    Tratamiento de errores con rescue
    8 minutos
  12. 12
    Elevando errores con raise
    8 minutos
  13. 13
    with
    14 minutos
  14. 14
    Sigilos
    8 minutos
  15. 15
    Tests con ExUnit
    12 minutos
  16. 16
    Más particularidades de ExUnit
    13 minutos
  17. 17
    Microservicios en Elixir con Plug
    11 minutos
  18. 18
    Cómo Plug.Router te ayuda a escribir microservicios en Elixir
    14 minutos
  19. 19
    ¿Cómo hacer rutas dinámicas en Phoenix y Plug?
    13 minutos