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
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 mensagemonline
$ 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:
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
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
É 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 aomix.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:
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:
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:
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é
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/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.