O documento discute porque aprender programação, o que é a linguagem Ruby, suas vantagens, exemplos de métodos e classes, e o que pode ser feito com Ruby. É destacado que um bom programador Ruby segue boas práticas, escreve testes, e ajuda a comunidade.
2. 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
3. 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
4. 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
5. Porque programar em Ruby?
Exemplo de método (fig.1) e classe
(fig.2)
fig.1
fig.2
6. 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
7. Interesting Ruby
Eu 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.
8. Interesting Ruby
Caso 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”.
9. 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
11. 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
13. 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
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
usando
boas
práticas?
14. 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
15. 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"
16. 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