Offical learning resources
Elixir School
Visualizations of Elixir functions
foundational
Thomas. 2018. Programming Elixir
McCord, Tate, Valim. 2019. Programming Phoenix
intermediate
Juric. 2018. Elixir in Action
Lessel. 2018. Phoenix in Action
more: Elixir Books
ElixirSips (280+ videos)
Alchemist Camp (130+ videos)
ElixirCasts (120+ videos)
Elixir for Programmers (8hrs video)
Pragmatic Studio: Elixir & OTP (6hrs video), Phoenix LiveView (6hrs video)
Clean Coders: Elixir (9hrs video)
30 Days of Elixir (30 exercises)
CodeWars.com (395 exercises)
Exercism.io (94 exercises)
Besides the bundled ones
ExUnit
Mix
Logger
Ecto
Plug
I use these frequently
static analyzer: Credo
type-checking: Dialyxir, Dialyzer
http client: Tesla, Finch
html parsing, web-scraping: Floki
json: Jason
csv: NimbleCSV
benchmarking: Benchee
math: Erlang's math module, Decimal
cryptography: Erlang's crypto module
datetime: Timex
auth: Pow
AWS: ExAws
emailing: Bamboo
test coverage: ExCoveralls
mocking: Mox
property-based testing: StreamData
end-to-end testing: Wallaby
job queueing, scheduling: Oban
cron-like job scheduling: Quantum
data processing: Broadway, Flow
monitoring & metrics: Telemetry, Prometheus
event sourcing: Commanded
realtime user interaction: LiveView
PaaS: Gigalixir
more: Awesome Elixir
- TDD: mix test
<path>:<line> --trace
- interactive shell:
iex
for running smaller blocks, also its commandsi
&h
;
iex -S mix phx.server
then importing & calling functions, queries, requests, etc. binding() |> IO.inspect(label: "#{__MODULE__}:#{__ENV__.line}")
dbg/2
.Process.info(self(), :current_stacktrace) |> IO.inspect()
require IEx; IEx.pry()
- from Ecto query to SQL string:
Repo.to_sql(:all, query) |> elem(0) |> IO.puts()
- Code Runner for running larger blocks
- VSCode debugger's breakpoints
- mix xref:
mix xref graph --format dot
then (with graphviz installed)dot -Tpdf xref_graph.dot -o xref_graph.pdf
ElixirLS
Elixir snippets
Code Runner
BEAMdasm
ElixirConf
Code Sync
EmpEx
Confreaks
GOTO