Entendendo um pouco melhor o que é Ruby
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
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
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
Porque programar em Ruby?
Exemplo de método (fig.1) e classe (fig.2)
fig.1
fig.2
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
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.
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”.
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
Exemplo de um arquivo Gemfile
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
Mas afinal, o que podemos fazer com Ruby?
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
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
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"
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
That’s all Folks \o/
❖ twitter.com/patrickemuller
❖ fb.com/patrick.miiller
❖ github.com/mpatrick
Top Related