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 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.
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”.
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
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?
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

Entendendo um pouco melhor o que é Ruby

  • 1.
  • 2.
    Antes de tudo….Porque 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 emRuby? ❖ 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 emRuby? Exemplo de método (fig.1) e classe (fig.2) fig.1 fig.2
  • 6.
    Interesting Ruby ❖ Em Rubyvocê 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ãopreciso 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 euprecise 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ásicasda 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
  • 10.
    Exemplo de umarquivo Gemfile
  • 11.
    Mas afinal, oque 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
  • 12.
    Mas afinal, oque podemos fazer com Ruby?
  • 13.
    Convenções e BoasPrá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 ocó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 deum 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 diferenciaum bom Rubysta de um mal Rubysta? ❖ Não fazer testes ❖ Não usar boas práticas ❖ Não ajudar a comunidade ❖ Criar GEMs fechadas
  • 17.
    That’s all Folkso/ ❖ twitter.com/patrickemuller ❖ fb.com/patrick.miiller ❖ github.com/mpatrick