Consultoria - sinatra/?

29 views
Skip to first unread message

Felipe Rodrigues

unread,
Apr 29, 2019, 3:42:56 PM4/29/19
to Guru-SP
Boa tarde, galera!

Ainda sou novo com programação Ruby e desenvolvimento no geral. Estava tranquilamente trabalhando com Rails quando me deparei com uma aplicação que, aparentemente, foi desenvolvida com Sinatra e com a gem Grape (API). Eu quero entender toda a arquitetura e estrutura dessa API que está disponível no github do institutotim (https://github.com/institutotim/zup-api) - estou disposto a pagar a hora (ou algum pacote combinado) para entender como essa aplicação foi dimensionada, seus recursos, enfim para dominar e poder trabalhar com ela.

Há uma segunda observação a respeito de um serviço 'cubes' OLAP que está sendo utilizado pela aplicação - se você já tiver trabalhado com isso, com certeza será um ponto crucial, mas não se prenda a isso, mais do que o cubes e o serviço de BI implementado na aplicação eu quero entender como ela está funcionando de maneira geral. 

Everton J. Carpes

unread,
Apr 29, 2019, 4:48:41 PM4/29/19
to rub...@googlegroups.com
Não vou me oferecer para a consultoria, mas acabei abrindo o projeto por curiosidade e consegui capturar algumas percepções gerais em uma análise rápida:

- A aplicação pode não ser em Rails diretamente, mas usa bastante os recursos como a ActiveRecord e ActionMailer replicando alguns comportamentos do Rails em códigos como o que se encontra no arquivo environment.rb (e os arquivos dali requeridos, como os initializers, etc)
- Essa gem Grape é central para a organização da API, não dá para não conhecer ela bem
- Os testes que existem na pasta "spec" podem te ajudar a ter uma visão mais específica dos comportamentos esperados (por exemplo, na pasta spec/api tem descrições de cada endpoint); não me parece haver algo equivalente a um teste de integração do Rails que teste uma sequência que passe por N endpoints e simule um fluxo de uso, mas isoladamente dá para ter alguma noção da interface de cada endpoint

Eu vi que tu colocou uma issue lá no projeto questionando esse mesmo ponto sobre uma visão geral, mas lá tu deu um exemplo sobre os relatórios e entre as coisas lá comentadas tu falou sobre rotas.. essa abordagem do Grape é um pouco diferente do Rails, onde tu tens as rotas todas agrupadas num arquivo só, e também não sei se existe algo parecido com o rake routes do Rails, mas na documentação do Grape eles comentam que tu tem acesso mais "programático" as informações sobre a API:

https://github.com/ruby-grape/grape#describing-and-inspecting-an-api

mas nessa entrada aqui do StackOverflow eles comentam sobre haver uma gem para prover rake tasks para o grape:

https://stackoverflow.com/questions/44656878/how-to-get-routes-by-grape-api


Enfim, estou com tempo limitado, mas essa foi a análise preliminar, sugiro que quem for se debruçar nesse projeto comece se familiarizando tanto com o Grape quanto com a estrutura da API, se tiver algum recurso pra inspecionar melhor essa estrutura de recursos/rotas parece ser um ponto de partida para melhor entendimento.

Sobre o cubes, eu sugiro que a pessoa que for pegar esse projeto se debruce sobre esse ponto com atenção, parece que ele é usado para uma parte mais específica da aplicação, mas não fui afundo, mas seja como for o uso dele, ele é usado para interface com base de dados multi-dimensional, então se você não sabe bem como isso funciona, vale dar uma estudada antes de começar nessa parte.

Obrigado por compartilhar suas dúvidas, mesmo em estágio mais inicial, serve para pessoas curiosas se debruçarem sobre o projeto.

Uma questão que me saltou aos olhos ao ver esse projeto é: vale mesmo a pena, não adotar o Rails e acabar fazendo tantos esforços para usar partes do mesmo e organizar tudo por sí próprio? Eu compreendo a coisa pelo lado de testar e aprender sobre uma abordagem diferente e também compreendo quando alguém não usa o Rails mesmo, refaz ORM ou o que achar necessário para ter um mínimo de "sobrecarga" (de conceitos e de memória mesmo) acima da sua aplicação, mas num cenário desses onde acaba adotando metade do Rails, me parece tão estranho essa decisão.




--
--
Você recebeu esta mensagem porque está inscrito no Grupo "ruby-sp" em
Grupos do Google.
Para postar neste grupo, envie um e-mail para rub...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para
ruby-sp+u...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com.br/group/ruby-sp?hl=pt-BR
Página oficial do GURU-SP: http://www.gurusp.org
---
Você recebeu essa mensagem porque está inscrito no grupo "Guru-SP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para ruby-sp+u...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.


--
Everton J. Carpes

Felipe Rodrigues

unread,
Apr 29, 2019, 8:09:43 PM4/29/19
to rub...@googlegroups.com
Porr, cara, genial! Já fico deveras agradecido, com certeza vou analisar os pontos ressaltados e abrirei um novo tópico se for necessário, mas já ajudou muito mesmo!
Atenciosamente,
Felipe Rodrigues da Costa
Reply all
Reply to author
Forward
0 new messages