Elixir

Cargar archivo al iniciar iex

iex -r elixir_file.ex

Compilar con elixirc y cargar desde iex

$ elixirc my_module.ex
iex> l MyModule

Compilar desde iex

iex> c "my_module.ex"

Entrar a iex con la configuracion del proyecto/mix

iex -S mix

Ejecutar script al iniciar iex

iex -S mix run startup.exs

Iniciar observer

iex> :observer.start

Habilitar historial en iex

export ERL_AFLAGS="-kernel shell_history enabled"

Obtener aplicaciones que se están ejecutando

iex> :application.which_applications

Obtener lista de aplicaciones que se están ejecutando con sus pid y obtener info de ese pid.

iex> :application.info[:running]
...
iex> pid(0, 316, 0) |> Process.info

Detener e iniciar una aplicación. Algunas veces he tenido que reiniciar :logger después de un recompile.

Application.stop(:logger)
Application.start(:logger)

Listar los procesos bajo un supervisor

iex > Supervisor.which_children(MyApp.Supervisor)

Filtrar procesos por nombre y listarlos. Listar los que contienen MyApp en su nombre

Process.list
|> Enum.filter(fn(pid) ->
    {:registered_name, name} = Process.info(pid, :registered_name)
    to_string(name) =~ "MyApp"
end)
|> Enum.map(fn pid -> Process.info(pid, :registered_name) end)

Obtener estado de un proceso

:sys.get_state(pid)

mix

Crear proyecto umbrella para tener sub apps

mix new hello_world --umbrella

Crear app con supervisor

mix new hello_world --sup

Crear módulo

mix new hello_world

O el equivalente

mix new hello_world --module HelloWorld

Lanzar los tests del módulo

mix test

Lanzar los test del módulo cuando hay cambios en algún archivo. Es necesario tener instalado fswatch (brew install fswatch).

fswatch lib test | mix test --listen-on-stdin

Obtener dependencias

mix deps.get

Actualizar dependencias

mix deps.update

Dar formato a archivo con mix

mix format file.ex

Verificar formato con mix

mix format --check-formatted file.ex

nvim

Para syntaxis nvim-treesitter.

Agregar nvim-treesitter a ~/.config/nvim/init.vim

Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}

E instalar

:PlugInstall

Activar el highlight en ~/.config/nvim/lua/init.lua

require'nvim-treesitter.configs'.setup{
  highlight={
    enable=true
  }
}

Agregar elixir a treesitter

:TSInstall elixir
:TSInstall heex

Pasé de vim-elixir a treesitter porque en algún momento vim-elixir dejó de mostrar la sintaxis de los archivos heex, más detalles en https://github.com/elixir-editors/vim-elixir/issues/562

Documentación

Referencias