Nossos objetivos principais são:
- Aprender Ruby e Rails
- Montar um server Rails
- Implementar ambientes de desenvolvimento e produção
- Implementar o Continous Integration e Continous Delivery
- Aprender tarefas de DEVOPS (mysql, linux, aws e ci/cd)
Usaremos a técnica de Aprendizado por demanda (mais informações aqui)
Objetivo prático – fazer um servidor de microserviços
Acho legal cada pessoa escolher o seu tema, mas como sugestão vou escolher fazer um microserviço que checa se um sistema qualquer está no ar ou não.
Aula 0 – Alicerce de conhecimentos
Para “aquecer os motores” vamos estabelecer dois objetivos menores e estudar uma listinha de materiais que nos dará um norte para o resto do curso. Os objetivos são:
1 – Entender o que é o Ruby e o Rails através de material online.
Abaixo tem uma listinha de links para os materiais que devemos ler.
https://rubyonrails.org/doctrine
https://guides.rubyonrails.org/getting_started.html
https://www.json.org/json-en.html
https://dicasdeprogramacao.com.br/o-que-e-json/
https://tudosobrehospedagemdesites.com.br/servidor-web/
https://www.luiztools.com.br/post/o-que-e-um-micro-servico-ou-microservice/
https://www.devmedia.com.br/introducao-a-web-services-restful/37387
https://www.csoonline.com/article/3634784/how-corporate-data-and-secrets-leak-from-github-repositories.html
Recomendo também instalar as seguintes ferramentas de desenvolvedor. Caso você já prefira alguma alternativa o passo é opcional.
Atom – editor de texto opesource – https://atom.io/
DBeaver – Interface para banco de dados Mysql – https://dbeaver.io/
2 – Definir o que vamos fazer até a aula seguinte, cada um vai definir o tema de criação de um microserviço da sua escolha.
Como comentei acima, o primeiro objetivo nosso com o rails será instalar o ambiente e depois desenvolver alguma coisa. O exemplo que escolhi será um microserviço que terá as seguintes caracteristicas:
- Acessa um sistema que será monitorado de tempos em tempos para coletar o seu estado de funcionamento
- Registra as consultas de estado em um banco de dados
- Caso o estado do sistema monitorado seja ruim, o microserviço emite um SMS ou EMAIL
- Pode receber uma chamada GET para consultar o estado de funcionamento de um determinado sistema e devolve esse estado através de um objeto JSON
Você pode optar por seguir esse exercício proposto ou bolar o seu próprio microserviço. Caso alguem queira fazer algo diferente podemos comentar na próxima aula. Os seguintes tópicos serão abordados, mas se alguém aparecer com uma idéia diferente vamos discutir:
- Comunicação através de API RESTful
- Armazenamento em banco de dados
- Tarefas com excução automática via Timer, famoso “pooling”
- Configuração via variáveis de ambiente e banco de dados
Achados para Próximas Aulas
https://www.bootrails.com/blog/rails-form-tutorial/ – Tutorial de formulário no Rails
https://getbootstrap.com/docs/4.0/components/forms/ – baita tutorial de formas no bootstrap
https://edgeapi.rubyonrails.org/classes/ActionController/Redirecting.html
https://damuz91.medium.com/setting-up-puma-as-a-service-in-systemd-in-ubuntu-18-9d2c1fe774e4 – Tutorial de como instalar o PUMA como serviço
Comandos Úteis para não esquecer
#Cria modelo com os campos definidos
bin/rails generate model Article title:string body:text
rails generate controller Publicacoes index --skip-routes
#precompila
RAILS_ENV=production bin/rake assets:precompile
#cria chaves - deletar o credentials e o master.key antes
EDITOR="nano --wait" bin/rails credentials:edit
#instalar o mysql2 no apple M1
gem install mysql2 -v '0.5.3' -- \
--with-mysql-lib=$(brew --prefix mysql)/lib \
--with-mysql-dir=$(brew --prefix mysql) \
--with-mysql-config=$(brew --prefix mysql)/bin/mysql_config \
--with-mysql-include=$(brew --prefix mysql)/include
:binary
:boolean
:date
:datetime
:decimal
:float
:integer
:primary_key
:string
:text
:time
:timestamp
Aula 01 – Git
Cadastrar a chave na sua estação local
nano ~/.ssh/config
Host github.com
Hostname github.com
IdentityFile ~/path/to/key.pem
IdentitiesOnly yes
Aula 02 – MVC
https://www.devmedia.com.br/introducao-ao-padrao-mvc/29308 – Artigo sobre MVC