My Profile Photo

Jociel Souza

PHP Clojure Javascript Mongodb ZendFramework


Desenvolvedor Web - Backend - PHP


Estudante de Ciência da Computação, desenvolvedor de software apaixonado por tecnologia.


Estudante de Ciência da Computação procurando sempre aprender algo novo, desenvolvedor web com conhecimento em PHP7^, Zend Framework, Zend Expressive, Doctrine ORM, Doctrine ODM, MongoDB, Javascript, VueJS, HTML, GIT entre outros, atualmente estudando também Clojure, Elm e o paradigma funcional e tentando compartilhar o conhecimento adquirido.


Clojure - Leiningen | Jociel Souza

Clojure - Leiningen


Em projetos de software, sejam grandes ou pequenos, pela facilidade e otimização do tempo, busca-se a reutilização de código, isso inclui também a utilização de bibliotecas de terceiros, gerenciar e manter essas dependências acaba se tornando complicado e tomando muito tempo com o crescimento do projeto. Assim, para facilitar existem os gerenciadores de dependências, que agilizam processos de instalação, remoção, atualização de dependências entre outras atividades.


Para quem vem do PHP, análogo ao Composer, em Clojure temos o Leiningen, um gerenciador de projetos e dependências para Clojure. Vamos ver como instalar e criar um projeto básico com ele.
Eu estou utilizando a distribuição linux Manjaro, talvez possa mudar alguns comandos ou caminhos no sistema que você estiver usando.


Instalação

Primeiramente vamos fazer o download do script de instalação.

Vamos mover esse script para o diretório /bin, e atribuir propriedade de executável para ele.

Em seguida podemos rodar o comando lein que ele irá fazer o download dos pacotes necessários.

Pronto, a instalação do Leiningen está feita. Um recurso que o Clojure oferece para o desenvolvedor é o REPL, sigla para Read-Eval-PrintLoop. REPL é um prompt onde podemos testar trechos de código sem precisar criar um projeto inteiro para isso, basta rodar o REPL. Podemos acessá-lo a partir do Leiningen, executando dentro do diretório de um projeto, toda a estrutura do mesmo fica disponível, funções, propriedades, etc.

A partir disto estamos no prompt REPL e podemos testar código Clojure direto no terminal, para sair basta digitar:


Criando um projeto

Agora vamos criar um projeto inicial, podemos rodar o comando a seguir para criar um novo projeto chamado “hello”.

Agora temos um diretório chamado hello, onde está nosso projeto com sua estrutura, não vamos nos aprofundar muito na estrutura nesse momento, único destaque é o diretório src, onde fica o código do projeto criado.

Na raiz do projeto existe um arquivo chamado project.clj, fazendo novamente um paralelo com o composer.json, esse é o arquivo que o Leiningen utiliza para organizar as dependências, propriedades do projeto entre outras coisas.
Vamos testar, primeiro abra o arquivo project.clj e coloque o código a seguir abaixo da linha :dependencies, ainda dentro dos parênteses.

Ficará semelhante a isso

Aqui definimos qual a função principal, que sera executada quando rodarmos o projeto.

Agora entramos no diretório do projeto e executamos o seguinte comando

lein run

A saída deverá ser semelhante a esta.

Hey Hello, World

Se abrirmos o arquivo core.clj dentro de src, veremos que nossa função principal foo recebe um parâmetro, que foi o Hey que mandamos por linha de comando e imprime a frase Hey Hello World.


Instalando dependências

Para instalar uma dependência no projeto com o Leiningen é bem simples, similar a gerenciadores de dependências de outras linguagens, no arquivo project.clj devemos adicionar as dependências que queremos instalar. Para esse exemplo utilizaremos a biblioteca clj-http, que possibilita fazermos requisições http, então devemos adicioná-la na propriedade :dependencies do arquivo, ficando similar ao código a seguir.

todas as dependências que necessitamos adicionamos nesse formato, após isto podemos rodar o seguinte comando para o leiningen fazer a instalação das mesmas.

lein deps

Após a finalização, a biblioteca estará disponível para usarmos, vamos abrir nosso arquivo principal core.clj e modificá-lo usando a biblioteca que acabamos de instalar para fazer uma requisição a uma API.

Na linha 2 fazemos um require do namespace clj-http.client e colocando como álias client, na linha 7 estamos utilizando a função get fazendo uma requisição para o endpoint passado como parâmetro e imprimindo o resultado.


Conclusão

Essa é a estrutura básica de um projeto Clojure, como instalar dependências no projeto, a partir disto podemos evoluir para algo mais complexo, para ver mais recursos do Leiningen acesse o site do projeto https://leiningen.org.

Dúvidas, sugestões… podem deixar comentários, e compartilhar caso gostou :D.

comments powered by Disqus