Download - Entendendo um pouco melhor o que é Ruby
![Page 1: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/1.jpg)
Entendendo um pouco melhor o que é Ruby
![Page 2: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/2.jpg)
Antes de tudo….Por que aprender a programar?
❖ Salários altos comparado a outras áreas (mas baixos em comparação a outros países)
❖ É mais fácil conseguir empregos remotos
❖ Aprendizagem constante
❖ Desafios diários
❖ Divertido
![Page 3: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/3.jpg)
O que é Ruby?
❖ Criada por Yukihiro Matsumoto
❖ Ideia concebida em 24 de fevereiro de 1993
❖ Versão 1.0 lançada em 25 de dezembro de 1996
❖ Última versão estável (até 29/11/2013) é a 2.0.0-p353
❖ Orientada a objeto
❖ Inspirada no Perl e Python
❖ Open-Source
![Page 4: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/4.jpg)
Porque programar em Ruby?
❖ A simplicidade da linguagem afeta diretamente a produtividade diária do desenvolvedor
❖ Linguagem de fácil leitura
❖ Tudo é um objeto
❖ Interactive Shell. Os comandos podem ser testados direto em terminal, sem necessidade de escrever e “compilar" código para ver se deu certo
❖ Comunidade tem o instinto de ajuda, e é fácil conseguir soluções bem elaboradas
❖ Na versão 1.9+ o Ruby ganhou uma máquina virtual chamada YARV (Yet Another Ruby Virtual Machine) que proporcionou grande aumento de performance
![Page 5: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/5.jpg)
Porque programar em Ruby?
Exemplo de método (fig.1) e classe (fig.2)
fig.1
fig.2
![Page 6: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/6.jpg)
Interesting Ruby
❖ Em Ruby você não precisa declarar o tipo de variável explicitamente
❖ O uso de Meta-programação é fácil e faz parte da proposta da linguagem
❖ Sobre-escrever métodos é fácil
❖ Sem getter e setters escritos manualmente
❖ Parêntese é opcional
❖ Monkey Patch é de fácil implementação
![Page 7: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/7.jpg)
Interesting RubyEu não preciso criar setter e getters manualmente, pois o Ruby já tem métodos prontos no core da linguagem que fazem toda essa parte, bastante apenas eu passar um “Symbol”, que seria o “:velocity” e ele cria um getter e um setter para o meu atributo “velocity”, bastante apenas depois eu colocar “Car.velocity = 10”, no caso do setter, e “Car.velocity #=> 10” no caso do getter para ele exibir o valor que eu ordenei.
![Page 8: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/8.jpg)
Interesting RubyCaso eu precise de um método que faz a mesma coisa, só que com nomes diferentes, existem meta-métodos que servem exatamente para a escrita de meta-programação, e que auxiliam isso por padrão. Um exemplo é o método “define_method”, que como o próprio nome já diz “defina_método”.
![Page 9: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/9.jpg)
GEMs
❖ Abstraem funcionalidades básicas da aplicação para pedaços separados, podendo assim serem usados em qualquer novo projeto sem ter que duplicar código manualmente
❖ Ajudam a comunidade proporcionando funcionalidades que são úteis a mais de uma pessoa
❖ Criar GEMs ajudam no entendimento de como Ruby funciona e como implementar meta-programação
❖ São em geral GRATUITAS, apenas sendo pagas em casos muito específicos relacionadas a regras de negócio de um cliente, por exemplo
![Page 10: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/10.jpg)
Exemplo de um arquivo Gemfile
![Page 11: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/11.jpg)
Mas afinal, o que podemos fazer com Ruby?
❖ Cálculos complexos
❖ Scripts de teste
❖ Importação de dados para Bancos de Dados
❖ Automatização de tarefas
❖ Outras linguagens (Frameworks, assim como o Rails)
❖ APIs
❖ Parser de logs
❖ Trabalhar com protocolos diversos
❖ Ler e escrever arquivos em diversos formatos
![Page 12: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/12.jpg)
Mas afinal, o que podemos fazer com Ruby?
![Page 13: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/13.jpg)
Convenções e Boas Práticas
❖ Existe uma série de guias de como escrever código Ruby e de como organizá-lo para que outras pessoas entendam o que você quis dizer com aquilo.
❖ Como saber se estou usando boas práticas?Guidelines Plataformatec
❖ Sou obrigado a seguir um guia? Não, você não é, mas isso implica seriamente em qualidade de código e com a comunidade, pois uma GEM mal escrita ou código mal escrito afeta a produtividade de outra pessoa ou até mesmo da comunidade inteira
![Page 14: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/14.jpg)
Testes? Ein?
❖ Todo o código Ruby pode ser escrito acompanhado de testes, para que mesmo que você modifique o código no futuro, você saiba se ele ainda serve para o propósito o qual ele foi escrito, garantindo assim que seu projeto não sofra por falhas
❖ Existem diversas DSLs (Domain specific language) que são usadas para isso. No caso do Ruby on Rails o mais usado é o RSpec
❖ Existe boas práticas para testes? Sim, existem, para o RSpec em sí existe isso aqui >> Better Spec (For RSpec). Cada DSL pode ter seu próprio padrão de projeto e dai cabe a cada comunidade desenvolver suas próprias boas práticas
![Page 15: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/15.jpg)
Testes? Ein?Exemplo de um arquivo de "spec" para um Modelo do Framework Ruby on Rails usando-se o RSpec como DSL de teste. No caso abaixo está sendo validada a presença obrigatória dos atributos “user_id, video_id e note”. Logo mais abaixo, nas linhas 11 e 12 ele confere se existe uma relação entre a “avaliação (Avaliation)” e os modelos de “usuário(user)” e "video"
![Page 16: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/16.jpg)
O que diferencia um bom Rubysta de um mal Rubysta?
❖ Não fazer testes
❖ Não usar boas práticas
❖ Não ajudar a comunidade
❖ Criar GEMs fechadas
![Page 17: Entendendo um pouco melhor o que é Ruby](https://reader033.vdocuments.com.br/reader033/viewer/2022061304/5497ea8cb47959846d8b476f/html5/thumbnails/17.jpg)
That’s all Folks \o/
❖ twitter.com/patrickemuller
❖ fb.com/patrick.miiller
❖ github.com/mpatrick