Ferramentas para desenvolvimento em Elixir
Tags: elixir, phoenix, postgres, docker
Published: 2022-03-13 20:45:26

Neste guia irei mostrar/ensinar como instalar as ferramentas necessárias para que você consiga desenvolver tranquilamente em Elixir. Recomendo que utilize WSL2 (o que é meu caso) ou então Linux.

Utilizo a distro Ubuntu 20.04 juntamente com WSL2. Caso, você utilize outra distribuição e tiver problemas, por favor compartilhe conosco sua dúvida.
___

**Como instalar o Elixir?**
Primeiramente, se você pretende trabalhar com várias versões do **erlang** ou do **elixir** ao mesmo tempo o **asdf** é seu melhor amigo. **ASDF** nada mais é que um ``gerenciador de versões`` que pode ser usado por várias linguagens de programação, como por exemplo: **Node.js**, **Ruby**, **Python** e inclusive o **Elixir** e o **Erlang**.

**Instalando os pacotes de sistema necessários**
Para instalarmos o Elixir e o Erlang, precisamos instalar alguns pacotes necessário na nossa máquina.

Primeiro vamos atualizar nosso sistema:
`Isso pode demorar um pouco, caso você tenha acabado de instalar o Ubuntu.`
```bash
$ sudo apt update && sudo apt upgrade -y
```

Instalando os pacotes:
`Isso vai demorar bastante, então deixe o comando rodando e aproveite para beber água e comer uma fruta :]`
```bash
$ sudo apt-get -y install build-essential autoconf m4 libncurses5-dev libwxgtk3.0-gtk3-dev libwxgtk-webview3.0-gtk3-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev xsltproc fop libxml2-utils libncurses-dev openjdk-11-jdk
```

**Dependências Erlang opcionais:**
Se você quiser que o Erlang gere seus documentos ao compilar, ou se precisar do jinterface ou dos aplicativos ODBC, talvez seja necessário instalar algumas dependências extras. O script de compilação Erlang simplesmente os ignora se as dependências não forem atendidas, então tudo isso é opcional.
```bash
sudo apt-get install -y libxml2-utils xsltproc fop unixodbc unixodbc unixodbc-dev
```

**Instalando o asdf**
Para instalar o asdf, precisamos instalar primeiro o git.
```bash
$ sudo apt install curl git
```

Se você estiver utilizando o terminal padrão **BASH**, basta copiar o código abaixo.
```bash
git clone https://github.com/asdf-vm/asdf.git ~/.asdf
cd ~/.asdf
git checkout "$(git describe --abbrev=0 --tags)"

echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
source ~/.bashrc
asdf --version
```

Caso você utilize o terminal **ZSH** (assim como eu), copie o código abaixo.
```bash
git clone https://github.com/asdf-vm/asdf.git ~/.asdf
cd ~/.asdf
git checkout "$(git describe --abbrev=0 --tags)"

echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.zshrc
source ~/.zshrc
asdf --version
```
Em um novo terminal, instale os plugins Elixir e Erlang:
```bash
$ asdf plugin-add elixir
$ asdf plugin-add erlang
```
Agora podemos verificar todas as versões disponíveis do Elixir
```bash
asdf list-all elixir
...
1.13.1-otp-24
1.13.2
1.13.2-otp-22
1.13.2-otp-23
1.13.2-otp-24
1.13.3
1.13.3-otp-22
1.13.3-otp-23
1.13.3-otp-24
main
main-otp-22
main-otp-23
main-otp-24
master
master-otp-21
master-otp-22
master-otp-23
master-otp-24
```
Vamos instalar a mais recente, que no momento é a ``1.13.3``
```bash
$ asdf install elixir 1.13.3
```
Em seguida, precisamos informar ao asdf qual versão do Elixir deve ser usada pela máquina:
```bash
$ asdf global elixir 1.13.3
```
Agora vamos verificar todas as versões disponíveis do Erlang
```bash
$ asdf list-all erlang
...
24.0.2
24.0.3
24.0.4
24.0.5
24.0.6
24.1
24.1.1
24.1.2
24.1.3
24.1.4
24.1.5
24.1.6
24.1.7
24.2
24.2.1
24.2.2
24.3
25.0-rc1
```
Eu instalei na minha máquina a versão 24.2.2. Mas, sinta-se à vontade para instalar outra versão.

```bash
$ asdf install erlang 24.2.2
```
E por fim, vamos informar novamente ao asdf qual versão deve ser usada pela máquina:

```bash
$ asdf global erlang 24.2.2
```

**Instalando o Phoenix**
Comando para instalar o Phoenix:

```bash
$ mix archive.install hex phx_new
```

**Instalando o PostgreSQL com Docker**
O PostgreSQL é um servidor de banco de dados relacional. O Phoenix configura os aplicativos para usá-lo por padrão, mas caso você queira mudar, basta passar a flag ``--database`` ao criar um aplicativo.

**Instalação do Docker:**
O Docker é uma ferramenta que nos permite pular as etapas chatas de configuração de serviços para nossa aplicação. Além disso, ele permite reaproveitarmos o Kernel da máquina hospedeira entre vários serviços executados simultaneamente, conhecidos como containers.

Para instalar o Docker, sugiro esse link: [Docker Desktop WSL 2](https://docs.docker.com/desktop/windows/wsl/)

Depois de instalar o Docker e abrir o software você já está pronto para continuar. 

Para verificar que o Docker foi instalado corretamente, em uma nova janela do terminal execute:
```bash
$ docker version
```
Com o Docker instalado na sua máquina, basta rodar o seguinte comando no seu terminal para instalar o postgres:

`Os dados para autenticação no banco nesse caso serão:
usuário: postgres
senha: postgres`

```bash
$ docker run --name postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres
```
Lembrando que caso você esteja usando Ubuntu/Debian é necessário usar **sudo** antes do comando.

**Instalação padrão (Sem Docker)**

Para instalar o PostgreSQL na sua máquina basta escolher a opção adequada para o seu sistema operacional e fazer a instalação como recomendado:
[PostgreSQL Downloads](https://www.postgresql.org/download/)
`Caso queira, você pode seguir os passos listados aqui de forma mais simples.`

**Linux Ubuntu 20.04**
Para a instalação no Linux Ubuntu rode os seguintes comandos separadamente:
```bash
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

sudo apt-get update

sudo apt-get -y install postgresql
```
**Windows**
Para o Windows a única forma de instalação disponível é através do instalador. Você pode realizar o download através desse link:
[PostgreSQL Tutorials, Resources and Training | EDB](https://www.enterprisedb.com/postgresql-tutorial-resources-training?cid=437)

**Configurações para o Visual Studio Code**
Para o Visual Studio Code, precisaremos apenas instalar algumas extensões.

**ElixirLS**
A extensão a ser instalada é a ElixirLS, que também pode ser acessada diretamente pelo link:
[ElixirLS: Elixir support and debugger](https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls)

**Instalando o Insomnia**

Antes de instalar o Insomnia, é importante ressaltar que ele é compatível somente com sistemas 64-bit. Mas você pode usar o [Postman](https://www.postman.com/) que é bastante semelhante ao Insomnia e é acessado diretamente pelo navegador.

**Windows**
Para instalar o Insomnia no Windows, basta fazer o [download do instalador](https://updates.insomnia.rest/downloads/windows/latest?app=com.insomnia.app&source=website) e concluir a instalação.

**Linux**
Para instalar o Insomnia no Linux, você pode usar o snapd que é semelhante à um gerenciador de pacotes. Com ele podemos instalar diversos aplicativos com um único comando.

Para verificar se você possui ou não o snapd instalado, pode checar nesse link: [Installing snapd](https://snapcraft.io/docs/installing-snapd)

Se a distribuição Linux instalada na sua máquina estiver na seção **Distributions without snap pre-installed** significa que você não possui o snapd instalado. Para instalar basta clicar no link com o nome da sua distribuição e você irá para uma página com o passo a passo para a instalação. 

Com o snapd instalado, tudo que você precisa fazer é rodar o seguinte comando no seu terminal:

```bash
sudo snap install insomnia
```

**Conclusão**
Muito obrigado pela leitura até aqui e espero ter ajudado de alguma forma. Tem alguma sugestão ou encontrou algum problema? por favor deixe-me saber. 💜