Instalação das ferramentas de um desenvolvedor Elixir

Este é um guia de instalação de muitas ferramentas necessárias para você poder desenvolver na Linguagem de Programação Elixir. Para evitar alguns problemas, recomendo fortemente o uso de Linux ou WSL2 para quem tiver Windows 10, que é o meu caso.

Esto…


This content originally appeared on DEV Community and was authored by Maiqui Tomé

Este é um guia de instalação de muitas ferramentas necessárias para você poder desenvolver na Linguagem de Programação Elixir. Para evitar alguns problemas, recomendo fortemente o uso de Linux ou WSL2 para quem tiver Windows 10, que é o meu caso.

Estou usando a distro Ubuntu 20.04 LTS com o WSL2, que até o momento, não tem apresentando problemas para mim. Para este guia, baixei novamente o Linux Ubuntu 20.04 LTS para instalar tudo do zero. Então se você estiver usando outra distribuição e enfrentar problemas, por favor compartilhe conosco sua dúvida ou solução para o problema, assim estaremos ajudando mais devs :)

Instalando o Elixir

Primeiramente, vamos pensar agora na instalação do Elixir. Neste guia vamos instalar o Elixir usando o asdf, que é um gerenciador de versões que pode ser usado para várias linguagens de programação como Node.js, Ruby, Python, inclusive o Elixir e o Erlang.

Instalando o asdf

Para instalar o asdf, certifique-se que você tem o git instalado:

$ sudo apt install curl git

Você pode copiar todo o código abaixo de uma vez só e colar ele no seu terminal se você estiver usando o terminal padrão BASH. Caso você alterou para o terminal ZSH, abaixo deixei o código pronto pra colar no terminal também :)

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

Você pode copiar todo o código abaixo de uma vez só e colar ele no seu terminal se você estiver usando o terminal ZSH.

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

Instalando Pacotes do Ubuntu

Para o Elixir funcionar, precisamos ter o Erlang também. E para podermos instalar esses dois, precisamos ter instalado na nossa máquina alguns pacotes do Ubuntu.

Atualizando o sistema:
Se você acabou de instalar o Ubuntu, isso vai demorar, então você pode ir pegar um café :)

$ sudo apt update && sudo apt upgrade -y

Instalando os pacotes:
Isso vai demorar muito, mas muito mesmo, bem mais que o comando de atualização do Ubuntu, então você pode ir pegar outro café, ou melhor, uma jarra de café, ou ir fazer outra coisa mesmo e voltar daqui uma hora :)

$ 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

Instalando o Elixir com asdf

Começamos adicionando o plugin do Elixir:

$ asdf plugin-add elixir

Agora podemos verificar todas as versões disponíveis do Elixir

$ asdf list-all elixir
...
1.12.0
1.12.0-otp-22
1.12.0-otp-23
1.12.0-otp-24
1.12.0-rc.0
1.12.0-rc.0-otp-21
1.12.0-rc.0-otp-22
1.12.0-rc.0-otp-23
1.12.0-rc.0-otp-24
1.12.0-rc.1
1.12.0-rc.1-otp-22
1.12.0-rc.1-otp-23
1.12.0-rc.1-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.12.0

$ asdf install elixir 1.12.0-rc.1-otp-24

Por fim, precisamos informar ao asdf qual versão do Elixir deve ser usada pela máquina:

$ asdf global elixir 1.12.0-rc.1-otp-24

Podemos verificar a versão do Elixir usando elixir -v
image Na imagem acima, visualizamos que não temos o Erlang ainda.

Instalando o Erlang com asdf

Adicionando o plugin do Erlang:

$ asdf plugin-add erlang

Agora podemos verificar todas as versões disponíveis dele

$ asdf list-all erlang
...
23.3.4.1
24.0-rc1
24.0-rc2
24.0-rc3
24.0
24.0.1

Podemos instalar a mais recente, que no momento é a 24.0.1

$ asdf install erlang 24.0.1

E precisamos informar ao asdf qual versão do Erlang deve ser usada pela máquina:

$ asdf global erlang 24.0.1

Instalando o Phoenix

Comando para instalar o Phoenix:

$ mix archive.install hex phx_new 1.5.9

Instalando o Node.js com asdf

O Phoenix usará webpack para compilar ativos estáticos (JavaScript, CSS, etc), por padrão. O Webpack usa o gerenciador de pacotes node package manager (npm) para instalar suas dependências e o npm requer o Node.js.

Podemos instalar o Node.js também com o asdf.

Adicionando o plugin do Node:

asdf plugin-add nodejs
bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring

Verificando todas as versões:

$ asdf list-all nodejs
...
16.0.0
16.1.0
16.2.0

Podemos instalar a versão mais recente:

$ asdf install nodejs 16.2.0

Precisamos informar ao asdf qual versão do Node deve ser usada pela máquina:

$ asdf global nodejs 16.2.0

Verificando a versão:

$ node -v

Instalando o PostgreSQL e o pgAdmin com Docker

O PostgreSQL é um servidor de banco de dados relacional. O Phoenix configura os aplicativos para usá-lo por padrão, mas podemos mudar para MySQL ou MSSQL passando a flag --database ao criar um aplicativo.

Se você não entende muito bem sobre o PostgreSQL, recomendo assistir essa série no youtube: aqui você vai aprender a mudar a senha e o usuário do Postgres

Há duas formas de instalar o Postgres, localmente ou via Docker. Eu recomendo fortemente que você assista o vídeo do canal do Gustavo ELX PRO:
Aqui você vai aprender a instalar o Postgres e o pgAdmin com o Docker

O pgAdmin é uma aplicação que nos permite visualizar as tabelas e os dados nelas mais facilmente.

Para instalar o Docker no WSL2, sugiro esse link: Guia rápido do WSL2 + Docker

inotify-tools (para usuários linux)

Tem que ser instalado para o Live Reloading do Phoenix funcionar: acesse esse link para instalar

Verificando se Tudo Está Funcionando

Agora que tudo está instalado, você já pode criar o seu primeiro aplicativo Phoenix e colocá-lo em funcionamento.

Para verificar se tudo está funcionando, vamos executar um comando para criar um aplicativo Phoenix:

$ mix phx.new hello

Alterando configurações do PostgreSQL:

O username e o password devem ser iguais ao do PostgreSQL. Se você não alterou o nome do usuário e a senha no momento de instalação do PostgreSQL, você pode deixar o padrão "postgres", caso contrário, você terá que alterar nos dois arquivos abaixo:

# Configurações para o Ambiente de Desenvolvimento
# caminho: config/dev.exs

config :delivery_app, DeliveryApp.Repo,
  username: "postgres",
  password: "postgres",
  database: "delivery_app",
  hostname: "localhost",
  show_sensitive_data_on_connection_error: true,
  pool_size: 10
# Configurações para o Ambiente de Testes
# caminho: config/test.exs

config :delivery_app, DeliveryApp.Repo,
  username: "postgres",
  password: "postgres",
  database: "delivery_app_test#{System.get_env("MIX_TEST_PARTITION")}",
  hostname: "localhost",
  pool: Ecto.Adapters.SQL.Sandbox

Comando para criar o banco de dados:

$ mix ecto.create

Após, você deverá ver algo semelhante:

Compiling 11 files (.ex)
Generated delivery_app app
The database for DeliveryApp.Repo has been created

ATENÇÃO! Se você receber algum erro, certifique-se de que o usuário e a senha do postgres estejam corretas e, de que o banco de dados tenha sido iniciado.

Verificando se o banco foi iniciado (pra quem instalou sem docker)

  • Se você instalou sem usar docker, você pode usar esse comando para verificar se o postgres foi iniciado:
$ sudo service postgresql status
13/main (port 5432): down
  • Caso o retorno tenha sido down inicie o banco de dados com o comando:
$ sudo service postgresql start
* Starting PostgreSQL 13 database server
  • Após o comando start você receberá a mensagem online
$ sudo service postgresql status
13/main (port 5432): online

Verificando se o banco foi iniciado (pra quem instalou com docker)

  • Se você instalou o Postgres com docker, você pode usar esse comando para verificar se o Postgres foi iniciado. No meu caso, está rodando apenas o pgAdmim, que eu já havia iniciado ele antes:
$ docker container ls
CONTAINER ID   IMAGE            COMMAND            CREATED       STATUS        PORTS                            NAMES
44c8e2eb0171   dpage/pgadmin4   "/entrypoint.sh"   5 weeks ago   Up 26 hours   443/tcp, 0.0.0.0:15432->80/tcp   pgadmin-dev
  • Se o Postgres não apareceu, rode o comando:
$ docker container ls -a
61676d09bc02   postgres              "docker-entrypoint.s…"   5 weeks ago   Exited (0) 12 minutes ago                                    postgres-dev
44c8e2eb0171   dpage/pgadmin4        "/entrypoint.sh"         5 weeks ago   Up 26 hours                 443/tcp, 0.0.0.0:15432->80/tcp   pgadmin-dev
  • Pegue o número do postgres, e rode esse comando:
$ docker container start 61676d09bc02
  • Rode novamente o comando abaixo para verificar se o postgres foi iniciado. No meu caso ele aparece com o pgAdmin, que eu já havia iniciado antes do Postgres:
$ docker container ls
CONTAINER ID   IMAGE            COMMAND                  CREATED       STATUS              PORTS
    NAMES
61676d09bc02   postgres         "docker-entrypoint.s…"   5 weeks ago   Up About a minute   0.0.0.0:5432->5432/tcp           postgres-dev
44c8e2eb0171   dpage/pgadmin4   "/entrypoint.sh"         5 weeks ago   Up 26 hours         443/tcp, 0.0.0.0:15432->80/tcp   pgadmin-dev

Rodando o servidor do Phoenix:

Para verificar se tudo está funcionando, digite o comando abaixo:

$ mix phx.server

Após, acesse http://localhost:4000/ e você verá algo semelhante:
Alt Text

Extenções para o Visual Studio Code

Um editor de texto bastante usado pelos desenvolvedores Elixir é o Visual Studio Code. Nessa seção, falaremos sobre as extensões que podemos instalar para melhorar a nossa experiência.

ElixirLS

image
A primeira extensão que precisamos instalar é o ElixirLS que fornece:

  • Suporte a linguagem Elixir;
  • Depurador;
  • Autocomplete;
  • Fechamento automático inteligente de blocos de código;
  • Consulta de documentação ao passar o mouse;
  • Formatador de código ao salvar o arquivo;
  • Entre outras coisas...

Elixir Theme

Elixir Theme
É um tema de cores feito especialmente para código elixir. Nele as cores são bem separadas, onde conseguimos bater o olho e achar as coisas mais rapidamente.

Instalando Dependências no Projeto:

Agora vamos falar sobre dependências que podem ser instaladas em um projeto Elixir. Ao longo do tempo poderei adicionar novas dependências neste artigo. E, quem sabe, se começar a ficar extenso, posso fazer um novo artigo falando somente sobre dependências.

Credo

Credo é uma ferramenta de análise de código estático para a linguagem Elixir com foco no ensino e na consistência do código. É bom para manter a equipe com um padrão de código.

  • Adicione :credo como uma dependência ao mix.exs do seu projeto:
 defp deps do
   [
     {:credo, "~> 1.5", only: [:dev, :test], runtime: false}
   ]
 end
  • Execute o comando abaixo para instalar:
$ mix deps.get
  • Execute o comando para gerar o arquivo de configuração .credo.exs. Nele você poderá desabilitar algumas exigências.
$ mix credo gen.config
* creating .credo.exs

Agora podemos instalar uma extensão do vscode para ele sublinhar o código quando tiver alguma inconsistência:
image

Ou, ao invés de instalar a extensão, podemos também simplismente rodar o comando mix credo no terminal para verificar as inconcistências:
image
Nesse caso o Credo está nos informando que os módulos devem ter documentação, mas se decidirmos no momento não fazer documentação, podemos desabilitar essa função no arquivo .credo.exs trocando [] por false:

# .credo.exs

# ANTES
{Credo.Check.Readability.ModuleDoc, []},

# DEPOIS
{Credo.Check.Readability.ModuleDoc, false},

Ou podemos colocar um @moduledoc false informando que não estamos usando documentação no módulo:
image

Conclusão

Gostaria de te agradecer pela leitura até aqui e espero ter ajudado de alguma forma. Espero que, aos poucos, possamos ir ajustando as informações nesse artigo, atualizando e acrescentando novas ferramentas. Então, fique de olho nas atualizações. Qualquer dúvida ou sugestão, por favor deixe-me saber, estou sempre no Linkedin :)


This content originally appeared on DEV Community and was authored by Maiqui Tomé


Print Share Comment Cite Upload Translate Updates
APA

Maiqui Tomé | Sciencx (2021-05-27T04:16:59+00:00) Instalação das ferramentas de um desenvolvedor Elixir. Retrieved from https://www.scien.cx/2021/05/27/instalacao-das-ferramentas-de-um-desenvolvedor-elixir/

MLA
" » Instalação das ferramentas de um desenvolvedor Elixir." Maiqui Tomé | Sciencx - Thursday May 27, 2021, https://www.scien.cx/2021/05/27/instalacao-das-ferramentas-de-um-desenvolvedor-elixir/
HARVARD
Maiqui Tomé | Sciencx Thursday May 27, 2021 » Instalação das ferramentas de um desenvolvedor Elixir., viewed ,<https://www.scien.cx/2021/05/27/instalacao-das-ferramentas-de-um-desenvolvedor-elixir/>
VANCOUVER
Maiqui Tomé | Sciencx - » Instalação das ferramentas de um desenvolvedor Elixir. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/05/27/instalacao-das-ferramentas-de-um-desenvolvedor-elixir/
CHICAGO
" » Instalação das ferramentas de um desenvolvedor Elixir." Maiqui Tomé | Sciencx - Accessed . https://www.scien.cx/2021/05/27/instalacao-das-ferramentas-de-um-desenvolvedor-elixir/
IEEE
" » Instalação das ferramentas de um desenvolvedor Elixir." Maiqui Tomé | Sciencx [Online]. Available: https://www.scien.cx/2021/05/27/instalacao-das-ferramentas-de-um-desenvolvedor-elixir/. [Accessed: ]
rf:citation
» Instalação das ferramentas de um desenvolvedor Elixir | Maiqui Tomé | Sciencx | https://www.scien.cx/2021/05/27/instalacao-das-ferramentas-de-um-desenvolvedor-elixir/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.