Sobre: 
Apresentação que fala sobre a linguagem de programação 
Ruby e o framework de desenvolvimento web Rails. 
Publico alvo: 
Gente que gosta de informática e que estudou uma ou mais 
linguagens de programação. 
Objetivo: 
Quebrar paradigmas de padrões de uso de linguagens de 
programação, mostrando como o Ruby resolve algumas 
questões básicas. Apresentar o Rails e como ele pode 
agilizar o desenvolvimento de projetos web. 
Setembro de 2014
Linguagem de programação 
www.ruby-lang.org/pt 
Setembro de 2014 
It is easy to program in Ruby, 
but Ruby is not a simple language
Quais linguagens de 
programação você 
conhece? 
Java, C (#,++,Objective), PHP, ...
Elas são parecidas? 
● declaração de variáveis 
● sintaxe dos comandos 
● marcação de blocos 
● marcação de fim de linha
Ruby é um pouco 
diferente!
Ruby é um pouco 
diferente! 
;-)
Rodar 
Linguagem interpretada 
ruby arquivo.rb 
Console de testes 
irb
Rodar 
Linguagem interpretada 
ruby arquivo.rb 
Console de testes 
irb 
Ok! 
Nenhuma novidade! 
(Aparantemente) 
O que é isso?
“Olá mundo!”
#definindo 
class MinhaClasse 
def fala 
puts "Ola mundo!" 
end 
end 
#aplicando 
objeto = MinhaClasse.new 
objeto.fala 
Tradicional “Olá mundo!” em Ruby!
#definindo 
class MinhaClasse 
def fala 
puts "Ola mundo!" 
end 
end 
ou apenas isso! 
#aplicando 
objeto = MinhaClasse.new 
objeto.fala 
objeto.fala 
Tradicional “Olá mundo!” em Ruby!
#definindo 
class MinhaClasse 
def fala(frase, numero=1) 
puts numero.times {puts frase} 
end 
end 
#aplicando 
objeto = MinhaClasse.new 
objeto.fala "ola mundo" 
objeto.fala "ruby ", 3 
“Olá mundo” em Ruby com mais recursos!
O que vocês 
acharam? 
:-D
Ok! 
Vamos começar!
Eu sou 
➔ Desenvolvedor 
➔ Acredito na Linguagem Ruby 
➔ @MarceloBohn
Quer usar Ruby? 
➔ Online: tryruby.org 
➔ OS X (Apple - nativo nas versões recentes) 
➔ Linux 
➔ Windows (Microsoft) 
➔ Ruboto no Android (Google) 
➔ VM + Vagrant
Instalação 
Nativa do SO 
RVM (Ruby Version Manager) 
Rbenv (Ruby Environment)
Sobre a linguagem 
➔ Yukihiro Matsumoto - “Matz” 
➔ livre 
➔ primeira versão 1995 
➔ linguagem natural 
➔ “standard library” mais completa 
➔ menos código 
➔ tudo é objeto 
➔ marcação de final de linha
Sobre a linguagem 
➔ Yukihiro Matsumoto - “Matz” 
➔ livre 
➔ primeira versão 1995 
➔ linguagem natural 
➔ “standard library” mais completa 
➔ menos código 
➔ tudo é objeto o/ 
➔ marcação de final de linha :-)
Vamos ao código!
Variáveis Objetos (duck typing) 
v = 1 
v.class 
v.object_id 
v.methods 
v = “um” 
v.class 
v = (1..5)
Ruby style 
v = “bem vindo” 
v.upcase 
v.upcase! 
v[0..2] 
“sim” if v[0] == “B” 
v[0] == “b” ? “sim” : “não”
Ruby style 
1.to_s 
“5”.to_i 
[1,2,3,4].reverse 
3.times { p “Ruby! ” }
Familiar X Novo 
Condicionais 
➔ if 
➔ unless 
➔ case
Familiar X Novo 
Laços 
➔ for 
➔ while 
➔ each 
➔ map
Familiar X Novo 
Array 
a = [] 
a = Array.new 
a << 1 
a << “texto” 
a << (1..5) 
a += [3,4] 
s = “bem vindo” 
s[1..5]
Familiar X Novo 
Hash (chave + valor) 
h = {} 
h = Hash.new 
h[:a] = 1 
h[“b”] = “a” 
h[3] = (1..5)
Familiar X Novo 
Hash (chave + valor) 
h = {} 
h = Hash.new 
h[:a] = 1 
h[“b”] = “a” 
h[3] = (1..5) 
Symbol
Reescrever classe da linguagem 
(monkey patching) 
class Fixnum 
def dobra 
self.*2 
end 
end 
1.dobra
Reescrever classe da linguagem 
(monkey patching) 
class TrueClass 
def to_s 
‘Sim’ if self 
end 
end 
v = true 
v.to_s
Vários comandos em uma linha 
(1..5).to_a.reverse.join('|').split('|').map {|e| e.to_i.*2} 
● Pega o intervalo de números de 1 até 5 
● Converte em array 
● Inverte a ordem 
● Concatena tudo em uma string 
● Separa e converte novamente em array 
● Multiplica todos elementos por dois
+ Ruby 
➔ Meta-programação 
➔ Testes 
➔ Rhodes 
➔ Ruby on Rails
+ Ruby 
➔ Meta-programação 
➔ Testes 
➔ Rhodes 
➔ Ruby on Rails
Ruby on Rails 
Happy conding! 
Framework MVC de desenvolvimento web 
www.rubyonrails.com.br
O que é? 
➔ Framework MVC 
➔ Agilidade no desenvolvimento de 
aplicações Web (startups) 
➔ Gratuito 
➔ Código aberto 
➔ DRY (Don't Repeat Yourself)
Mundo sobre os trilhos 
➔ Migrations 
➔ RubyGems 
➔ ActiveRecord (gem) 
➔ ActiveController (gem) 
➔ ActiveView (gem)
Preparando a subida no vagão 
➔ Development, Testing and Production 
➔ Rails Generate ( Scaffold, Migration, Model, 
Controller, ... ) 
➔ Rails Sever 
➔ Rails Console
Iniciar a viagem 
Quanto tempo vc demora para fazer um 
CRUD?
APP + CRUD 
(Create, Read, Update e Delete) 
rails new first_app 
rails g scaffold product name: 
string active:boolean price:decimal 
group:integer 
rake db:migrate 
rails s
Perguntas?
Obrigado!
Obrigado! 
@MarceloBohn

Apresentação ruby + rails 2014

  • 1.
    Sobre: Apresentação quefala sobre a linguagem de programação Ruby e o framework de desenvolvimento web Rails. Publico alvo: Gente que gosta de informática e que estudou uma ou mais linguagens de programação. Objetivo: Quebrar paradigmas de padrões de uso de linguagens de programação, mostrando como o Ruby resolve algumas questões básicas. Apresentar o Rails e como ele pode agilizar o desenvolvimento de projetos web. Setembro de 2014
  • 3.
    Linguagem de programação www.ruby-lang.org/pt Setembro de 2014 It is easy to program in Ruby, but Ruby is not a simple language
  • 4.
    Quais linguagens de programação você conhece? Java, C (#,++,Objective), PHP, ...
  • 5.
    Elas são parecidas? ● declaração de variáveis ● sintaxe dos comandos ● marcação de blocos ● marcação de fim de linha
  • 6.
    Ruby é umpouco diferente!
  • 7.
    Ruby é umpouco diferente! ;-)
  • 8.
    Rodar Linguagem interpretada ruby arquivo.rb Console de testes irb
  • 9.
    Rodar Linguagem interpretada ruby arquivo.rb Console de testes irb Ok! Nenhuma novidade! (Aparantemente) O que é isso?
  • 10.
  • 11.
    #definindo class MinhaClasse def fala puts "Ola mundo!" end end #aplicando objeto = MinhaClasse.new objeto.fala Tradicional “Olá mundo!” em Ruby!
  • 12.
    #definindo class MinhaClasse def fala puts "Ola mundo!" end end ou apenas isso! #aplicando objeto = MinhaClasse.new objeto.fala objeto.fala Tradicional “Olá mundo!” em Ruby!
  • 13.
    #definindo class MinhaClasse def fala(frase, numero=1) puts numero.times {puts frase} end end #aplicando objeto = MinhaClasse.new objeto.fala "ola mundo" objeto.fala "ruby ", 3 “Olá mundo” em Ruby com mais recursos!
  • 14.
    O que vocês acharam? :-D
  • 15.
  • 16.
    Eu sou ➔Desenvolvedor ➔ Acredito na Linguagem Ruby ➔ @MarceloBohn
  • 17.
    Quer usar Ruby? ➔ Online: tryruby.org ➔ OS X (Apple - nativo nas versões recentes) ➔ Linux ➔ Windows (Microsoft) ➔ Ruboto no Android (Google) ➔ VM + Vagrant
  • 18.
    Instalação Nativa doSO RVM (Ruby Version Manager) Rbenv (Ruby Environment)
  • 19.
    Sobre a linguagem ➔ Yukihiro Matsumoto - “Matz” ➔ livre ➔ primeira versão 1995 ➔ linguagem natural ➔ “standard library” mais completa ➔ menos código ➔ tudo é objeto ➔ marcação de final de linha
  • 20.
    Sobre a linguagem ➔ Yukihiro Matsumoto - “Matz” ➔ livre ➔ primeira versão 1995 ➔ linguagem natural ➔ “standard library” mais completa ➔ menos código ➔ tudo é objeto o/ ➔ marcação de final de linha :-)
  • 21.
  • 22.
    Variáveis Objetos (ducktyping) v = 1 v.class v.object_id v.methods v = “um” v.class v = (1..5)
  • 23.
    Ruby style v= “bem vindo” v.upcase v.upcase! v[0..2] “sim” if v[0] == “B” v[0] == “b” ? “sim” : “não”
  • 24.
    Ruby style 1.to_s “5”.to_i [1,2,3,4].reverse 3.times { p “Ruby! ” }
  • 25.
    Familiar X Novo Condicionais ➔ if ➔ unless ➔ case
  • 26.
    Familiar X Novo Laços ➔ for ➔ while ➔ each ➔ map
  • 27.
    Familiar X Novo Array a = [] a = Array.new a << 1 a << “texto” a << (1..5) a += [3,4] s = “bem vindo” s[1..5]
  • 28.
    Familiar X Novo Hash (chave + valor) h = {} h = Hash.new h[:a] = 1 h[“b”] = “a” h[3] = (1..5)
  • 29.
    Familiar X Novo Hash (chave + valor) h = {} h = Hash.new h[:a] = 1 h[“b”] = “a” h[3] = (1..5) Symbol
  • 30.
    Reescrever classe dalinguagem (monkey patching) class Fixnum def dobra self.*2 end end 1.dobra
  • 31.
    Reescrever classe dalinguagem (monkey patching) class TrueClass def to_s ‘Sim’ if self end end v = true v.to_s
  • 32.
    Vários comandos emuma linha (1..5).to_a.reverse.join('|').split('|').map {|e| e.to_i.*2} ● Pega o intervalo de números de 1 até 5 ● Converte em array ● Inverte a ordem ● Concatena tudo em uma string ● Separa e converte novamente em array ● Multiplica todos elementos por dois
  • 33.
    + Ruby ➔Meta-programação ➔ Testes ➔ Rhodes ➔ Ruby on Rails
  • 34.
    + Ruby ➔Meta-programação ➔ Testes ➔ Rhodes ➔ Ruby on Rails
  • 35.
    Ruby on Rails Happy conding! Framework MVC de desenvolvimento web www.rubyonrails.com.br
  • 36.
    O que é? ➔ Framework MVC ➔ Agilidade no desenvolvimento de aplicações Web (startups) ➔ Gratuito ➔ Código aberto ➔ DRY (Don't Repeat Yourself)
  • 37.
    Mundo sobre ostrilhos ➔ Migrations ➔ RubyGems ➔ ActiveRecord (gem) ➔ ActiveController (gem) ➔ ActiveView (gem)
  • 38.
    Preparando a subidano vagão ➔ Development, Testing and Production ➔ Rails Generate ( Scaffold, Migration, Model, Controller, ... ) ➔ Rails Sever ➔ Rails Console
  • 39.
    Iniciar a viagem Quanto tempo vc demora para fazer um CRUD?
  • 40.
    APP + CRUD (Create, Read, Update e Delete) rails new first_app rails g scaffold product name: string active:boolean price:decimal group:integer rake db:migrate rails s
  • 41.
  • 42.
  • 43.