Conhecendo 
Ruby 
& 
Rails
Quem sou eu: 
Sérgio Henrique Miranda Júnior 
Líder Técnico @ Dito Internet 
Bacharel em Ciência da Computação pela 
Unive...
Dito Internet: 
Analytics + Ativação + Social 
Através da combinação dessas 3 forças 
a Dito atua com seus clientes com o ...
Alguns números… 
Mais de 27.631.682 eventos monitorados 
Uma média de 4K Requisições Por Minuto (RPM)
Alguns clientes…
Ruby http://www.ruby-lang.org/pt/
“ uma linguagem dinâmica 
e open source com foco na 
simplicidade e produtividade ” 
https://www.ruby-lang.org/en/
Um pouco de história: 
A linguagem foi lançada em 1995 
Desenvolvida por um japonês: Yukihiro “ Matz ” Matsumoto 
Populari...
Tudo é objeto: 
>> 1500.class 
=> Fixnum 
>> 1333.even? 
=> false 
>> “UFLA”.length 
=> 4
Variáveis: 
Tipagem dinâmica 
Não precisam ser declaradas 
Variáveis globais começam com o símbolo $ 
Variáveis de instânc...
Variáveis: 
>> $diretorio = ‘/var' 
>> faculdade = "UFLA" 
>> class Pessoa! 
>> @@quantidade = nil! 
>> def nome! 
>> @nom...
Variáveis: 
Como faz para validar tipo de variáveis ? 
Duck typing! 
Se anda como um pato… 
faz “quack” como um pato… 
pro...
Símbolos: 
>> name = twitter_api[:screen_name] 
Basicamente é uma string interna 
Existe somente uma cópia de cada símbolo...
Blocos: 
elementos = [1,2,3,4] 
elementos.each do |elemento| 
faca_algo(elemento) 
end 
Um bloco de código está sendo pass...
Blocos: 
É uma feature muito importante da linguagem. 
Vários métodos das bibliotecas padrões utilizam blocos 
em suas imp...
Métodos: 
Definição é realizada pela keyworkd def 
Ruby suporta valor default e número variável de argumentos 
def metodo_...
Métodos: 
def add(*numeros) 
numeros.inject(0) do 
|soma, numero| soma + numero 
end 
end 
! 
add(1) 
add(1, 2) 
add(1, 2,...
Classes: 
Definição é realizada pela keyword class e o construtor é 
o método initialize 
class Professor 
def initialize(...
Classes: 
Classes em Ruby nunca são fechadas. Você pode alterar a classe 
que desejar em runtime! 
class Fixnum 
def +(ano...
Classes: 
Herança é expressada de uma maneira bem simples 
class Professor < Profissional 
def metodo_sobrescrito(nome) 
#...
Módulos: 
Agrupam métodos, constantes e variáveis de classe 
Não podem ser instanciados ou utilizados como subclasse 
modu...
Módulos: 
Podem ser incluídos em classes 
class Carro 
include MotorV8 
include ABS 
include AirBag 
! 
def acelerar 
#......
Gem: 
É o gerenciador de pacotes utilizado pela linguagem 
Pode conter uma aplicação completa! 
$ gem install devise! 
$ g...
Ecossistema: 
Garbage Collector 
Standard Library 
String encoding/transcoding 
Regexp engine 
Utilitários (ferramentas de...
Recapitulando: 
definição de método 
class Professor 
def initialize(nome) 
if nome.eql? "" 
@nome = "Fulano" 
else 
condi...
Rails http://rubyonrails.com.br/
“ é um framework web open source 
otimizado para a felicidade e produtividade 
do programador. Faz com que você escreva 
c...
Framework: 
“ Conjunto de componentes de software 
que provêem uma arquitetura e estrutura 
básicas para o desenvolvimento...
Filosofia do Rails: 
Don’t repeat yourself (DRY): é uma sugestão para não repetir o 
mesmo código em vários lugares 
Conve...
Model View Controller (MVC): 
apresenta uma visão do 
model para o usuário 
View 
apresenta 
seleciona & renderiza 
utiliz...
Sub-componentes do Rails: 
Action Mailer: é um framework para desenvolver serviços de 
entrega de emails 
Action Pack: é u...
Sub-componentes do Rails: 
Active Record: Conecta classes a tabelas do banco de dados, 
ou seja, é o ORM do Rails. 
Active...
Model View Controller (MVC): 
Action View 
apresenta 
seleciona & renderiza 
Action Controller utiliza, procura e controla...
Exemplo ActiveRecord: 
class Person < ActiveRecord::Base 
validates :email, :presence => true 
validates :surname, :presen...
Ambientes: 
Teste: é o ambiente que sua aplicação é executada quando seus 
testes automatizados estão sendo realizados 
De...
Desenvolvimento com testes: 
Os testes são feitos antes da implementação 
O Rails já vem preparado para o desenvolvimento ...
Desenvolvimento com testes: 
describe Teacher do 
describe "requirements" do 
it "should have a name" do 
t = Teacher.new(...
Desenvolvimento com testes: 
Análise Teste Implemente 
Teste Refatore Teste
Migrations: 
É uma forma eficiente de alterar a base de dados 
Mantém o controle das alterações feitas e garante uma 
estr...
Migrations: 
class CreateTeacher < ActiveRecord::Migration 
def change 
create_table :teachers do |t| 
t.string :name 
t.s...
Assets pipeline: 
É um framework para concatenar e reduzir ou comprimir 
arquivos JavaScript e CSS. 
Adiciona a possibilid...
Assets pipeline:
Assets pipeline:
Rake: 
É um software para gerenciar tarefas. Similar ao make 
As tarefas são colocadas em Rakefile, que contêm código Ruby...
Rake: 
namespace :namespace_da_sua_task do 
desc "descricao da sua task" 
task :nome_da_sua_task => :dependencia_da_sua_ta...
Scaffold: 
É um gerador de código que proporciona um desenvolvimento 
mais rápido 
$ rails generate scaffold Post nome:str...
Console: 
É um Read Eval Print Loop (REPL) utilizado para interagir com 
a sua aplicação Rails sem precisar utilizar a int...
Hello Rails: 
$ rails new hello_rails 
$ cd hello_rails 
$ rails generate controller home index 
$ vim app/views/home/inde...
Hello Rails:
Recapitulando: 
MVC 
Componentes 
Ambientes 
Testes 
Migrations 
Assets pipeline 
Rake 
Scaffold
Quem utiliza Rails:
NÃO vire REFÉM 
do Framework 
escolha a ferramenta certa para o 
problema que você está enfrentando
Software só tem 
valor quando está 
sendo utilizado
O que vocês precisam… 
Terminal para executar seus comandos e inicializar 
o rails server 
Editor de texto para escrever/e...
OBRIGADO! 
twitter: @sergiohenrique 
sergiohenriquemiranda.com.br
Ruby & Rails
Próximos SlideShares
Carregando em…5
×

Ruby & Rails

556 visualizações

Publicada em

O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
556
No SlideShare
0
A partir de incorporações
0
Número de incorporações
92
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Ruby & Rails

  1. 1. Conhecendo Ruby & Rails
  2. 2. Quem sou eu: Sérgio Henrique Miranda Júnior Líder Técnico @ Dito Internet Bacharel em Ciência da Computação pela Universidade FUMEC
  3. 3. Dito Internet: Analytics + Ativação + Social Através da combinação dessas 3 forças a Dito atua com seus clientes com o objetivo de engajar o seu público alvo e maximizar os resultados
  4. 4. Alguns números… Mais de 27.631.682 eventos monitorados Uma média de 4K Requisições Por Minuto (RPM)
  5. 5. Alguns clientes…
  6. 6. Ruby http://www.ruby-lang.org/pt/
  7. 7. “ uma linguagem dinâmica e open source com foco na simplicidade e produtividade ” https://www.ruby-lang.org/en/
  8. 8. Um pouco de história: A linguagem foi lançada em 1995 Desenvolvida por um japonês: Yukihiro “ Matz ” Matsumoto Popularizada em 2006 graças ao Ruby on Rails Influência de Perl, Smalltalk, Eiffel, Ada e Lisp
  9. 9. Tudo é objeto: >> 1500.class => Fixnum >> 1333.even? => false >> “UFLA”.length => 4
  10. 10. Variáveis: Tipagem dinâmica Não precisam ser declaradas Variáveis globais começam com o símbolo $ Variáveis de instância começam com símbolo @ Variáveis de classe começam com o símbolo @@ Variáveis locais começam com a letra minúscula
  11. 11. Variáveis: >> $diretorio = ‘/var' >> faculdade = "UFLA" >> class Pessoa! >> @@quantidade = nil! >> def nome! >> @nome! >> end! >> end
  12. 12. Variáveis: Como faz para validar tipo de variáveis ? Duck typing! Se anda como um pato… faz “quack” como um pato… provavelmente é um pato!
  13. 13. Símbolos: >> name = twitter_api[:screen_name] Basicamente é uma string interna Existe somente uma cópia de cada símbolo na memória Persistem na memória até o programa ser finalizado
  14. 14. Blocos: elementos = [1,2,3,4] elementos.each do |elemento| faca_algo(elemento) end Um bloco de código está sendo passado para o método each. O bloco será executado para cada elemento do array def each index = 0 while index < self.length do yield self[index] index += 1 end end
  15. 15. Blocos: É uma feature muito importante da linguagem. Vários métodos das bibliotecas padrões utilizam blocos em suas implementações File.open("path_to_file") do |arquivo| faca_algo_com(arquivo) end seu arquivo é fechado automaticamente!
  16. 16. Métodos: Definição é realizada pela keyworkd def Ruby suporta valor default e número variável de argumentos def metodo_qualquer(arg1, arg2 = "teste") puts arg1 puts arg2 end metodo_qualquer(1) ! #imprime na saida padrão: 1n “teste” metodo_qualquer(0, “UFLA”) ! #imprime na saida padrão: 0n “UFLA”
  17. 17. Métodos: def add(*numeros) numeros.inject(0) do |soma, numero| soma + numero end end ! add(1) add(1, 2) add(1, 2, 3) add(1, 2, 3, 4)
  18. 18. Classes: Definição é realizada pela keyword class e o construtor é o método initialize class Professor def initialize(nome) @nome = nome end ! def nome @nome end end ! p = Professor.new("Ricardo") p.nome
  19. 19. Classes: Classes em Ruby nunca são fechadas. Você pode alterar a classe que desejar em runtime! class Fixnum def +(another_integer) self * another_integer end end >> 5 + 2 # mesma coisa que -> 5.+(2) => 10 #oooopssss! with great power comes great responsibility!
  20. 20. Classes: Herança é expressada de uma maneira bem simples class Professor < Profissional def metodo_sobrescrito(nome) # super sem nenhum argumento # irá passar todos os argumentos # recebidos para o método # da classe pai resultado = super resultado end end
  21. 21. Módulos: Agrupam métodos, constantes e variáveis de classe Não podem ser instanciados ou utilizados como subclasse module QualquerCoisa def self.algum_metodo ... end ! end ! QualquerCoisa.algum_metodo
  22. 22. Módulos: Podem ser incluídos em classes class Carro include MotorV8 include ABS include AirBag ! def acelerar #... end end
  23. 23. Gem: É o gerenciador de pacotes utilizado pela linguagem Pode conter uma aplicação completa! $ gem install devise! $ gem install mysql2! $ gem install archruby
  24. 24. Ecossistema: Garbage Collector Standard Library String encoding/transcoding Regexp engine Utilitários (ferramentas de debug, formatação de strings) Parser VM
  25. 25. Recapitulando: definição de método class Professor def initialize(nome) if nome.eql? "" @nome = "Fulano" else condicional @nome = nome end end ! def nome @nome end end ! p = Professor.new("Ricardo") p.nome definição de classe variável de instância Constante chamada de método
  26. 26. Rails http://rubyonrails.com.br/
  27. 27. “ é um framework web open source otimizado para a felicidade e produtividade do programador. Faz com que você escreva código bonito favorecendo a convenção sobre configuração ” http://rubyonrails.org/
  28. 28. Framework: “ Conjunto de componentes de software que provêem uma arquitetura e estrutura básicas para o desenvolvimento de uma aplicação. É uma aplicação semi pronta que deve ser extendida e personalizada ”
  29. 29. Filosofia do Rails: Don’t repeat yourself (DRY): é uma sugestão para não repetir o mesmo código em vários lugares Convention over Configuration: o Rails faz suposições sobre o que você quer fazer e como você fará o que deseja Representational State Transfer (REST): é uma maneira de organizar sua aplicação em recursos e verbos padrões utilizados pelo protocolo HTTP
  30. 30. Model View Controller (MVC): apresenta uma visão do model para o usuário View apresenta seleciona & renderiza utiliza, procura e controla Controller Model lógica do negócio, lógica do domínio controla a interação entre o usuário e o app
  31. 31. Sub-componentes do Rails: Action Mailer: é um framework para desenvolver serviços de entrega de emails Action Pack: é um framework para responder e receber requisições web. Fornece mecanismos para rotas e definições de controllers que implementam ações e renderizam o resultado gerado Active Model: fornece várias interfaces que podem ser utilizadas pelo model
  32. 32. Sub-componentes do Rails: Active Record: Conecta classes a tabelas do banco de dados, ou seja, é o ORM do Rails. Active Support: é uma coleção de classes utilitárias e extensões a standard library, que são úteis ao Rails Action View: é um framework para procurar e renderizar templates.
  33. 33. Model View Controller (MVC): Action View apresenta seleciona & renderiza Action Controller utiliza, procura e controla Active Record (& Action Dispatch) (& Active Model)
  34. 34. Exemplo ActiveRecord: class Person < ActiveRecord::Base validates :email, :presence => true validates :surname, :presence => true, :if => "name.nil?" ! has_many :books end ! class Book < ActiveRecord::Base validates :name, :presence => true ! belongs_to :person end ! !p = Person.new(:email => nil, :name => nil, :surname => "Miranda") p.valid? # false puts p.errors # email can't be blank ! p1 = Person.first p1_books = p1.books
  35. 35. Ambientes: Teste: é o ambiente que sua aplicação é executada quando seus testes automatizados estão sendo realizados Desenvolvimento: é o ambiente default quando você está trabalhando na sua aplicação Produção: é o ambiente em que sua aplicação é executada quando ela está no ar, sendo utilizada por usuários reais
  36. 36. Desenvolvimento com testes: Os testes são feitos antes da implementação O Rails já vem preparado para o desenvolvimento orientado a testes Framework largamente utilizado para testes na comunidade Rails: Rspec
  37. 37. Desenvolvimento com testes: describe Teacher do describe "requirements" do it "should have a name" do t = Teacher.new(:name => nil) t.should_not be_valid end end end
  38. 38. Desenvolvimento com testes: Análise Teste Implemente Teste Refatore Teste
  39. 39. Migrations: É uma forma eficiente de alterar a base de dados Mantém o controle das alterações feitas e garante uma estrutura de base idêntica entre os desenvolvedores Facilita modificações na base de produção
  40. 40. Migrations: class CreateTeacher < ActiveRecord::Migration def change create_table :teachers do |t| t.string :name t.string :cpf t.timestamps end end end
  41. 41. Assets pipeline: É um framework para concatenar e reduzir ou comprimir arquivos JavaScript e CSS. Adiciona a possibilidade de escrever os assets em outras linguagens e pre-processadores como: CoffeeScript, Sass e ERB
  42. 42. Assets pipeline:
  43. 43. Assets pipeline:
  44. 44. Rake: É um software para gerenciar tarefas. Similar ao make As tarefas são colocadas em Rakefile, que contêm código Ruby Migrations e testes automatizados são exemplos de tarefas executadas com o Rake
  45. 45. Rake: namespace :namespace_da_sua_task do desc "descricao da sua task" task :nome_da_sua_task => :dependencia_da_sua_task do tarefa_a_ser_executada end end
  46. 46. Scaffold: É um gerador de código que proporciona um desenvolvimento mais rápido $ rails generate scaffold Post nome:string titulo:string conteudo:string
  47. 47. Console: É um Read Eval Print Loop (REPL) utilizado para interagir com a sua aplicação Rails sem precisar utilizar a interface web para isso $ rails c >> Post.all >> Post.first >> p = Post.new(! :nome => “Teste”, ! :titulo => “titulo teste”, ! :conteudo => “Conteudo do post”)
  48. 48. Hello Rails: $ rails new hello_rails $ cd hello_rails $ rails generate controller home index $ vim app/views/home/index.html.erb => <h1> Hello Rails! </h1> $ vim config/routes.rb => root :to => “home#index” $ rails server Abra seu browser e acesse o endereço http://localhost:3000
  49. 49. Hello Rails:
  50. 50. Recapitulando: MVC Componentes Ambientes Testes Migrations Assets pipeline Rake Scaffold
  51. 51. Quem utiliza Rails:
  52. 52. NÃO vire REFÉM do Framework escolha a ferramenta certa para o problema que você está enfrentando
  53. 53. Software só tem valor quando está sendo utilizado
  54. 54. O que vocês precisam… Terminal para executar seus comandos e inicializar o rails server Editor de texto para escrever/editar códigos Browser para visualizar e interagir com a sua aplicação Ruby, para programar sua aplicação Rails, o framework para desenvolver aplicações web
  55. 55. OBRIGADO! twitter: @sergiohenrique sergiohenriquemiranda.com.br

×