It is easy to program in Ruby,
but Ruby is not a simple language

Linguagem de programação
www.ruby-lang.org/pt
Novembro de 2013
Quais linguagens de
programação vc
conhece?
Java, C (#,++,Objective), PHP, Delphi, ...
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!
;-)
#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
#aplicando
ou apenas isso!
objeto = MinhaClasse.new
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
Tradicional “Olá mundo” em Ruby!
Sou
➔ Desenvolvedor
➔ Professor (:active => false)
➔ Acredito na Linguagem Ruby
➔ @MarceloBohn
Ruby agora!
➔ Online: tryruby.org
➔ Nativo no OS X (Apple)
➔ Linux(free), Windows(Microsoft), …
➔ Ruboto no Android (Google)
➔ VM + Vagrant
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 :-)
Linguagem interpretada

ruby arquivo.rb
Console de testes

irb
OBS: RVM ( Ruby Version Manager )
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[0..2]
1.to_s
“5”.to_i
[1,2,3,4].reverse
3.times { print “Ruby! ” }
Familiar X Novo
Condicionais

Laços

➔ if

➔ for

➔ unless

➔ while

➔ case

➔ each
➔ map
Familiar X Novo
Array
a = []
a << 1
a << “texto”
a << (1..5)
a += [3,4]
s = “bem vindo”
s[1..5]

Hash
h = {}
h[:a] = 1
h[:b] = “a”
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úmero de 1 até 5,
converte em array, inverte a ordem, junta em
uma string, separa novamente em array,
multiplica todos elemente por dois
+ Ruby
➔ Meta-programação
➔ Testes
➔ Rhodes
➔ Ruby on Rails
Ruby on Rails
Happy conding!

Framework de desenvolvimento web
www.rubyonrails.com.br
Apresentação
➔ Framework MVC
➔ Agilidade no desenvolvimento de aplicações
Web
➔ Gratuito
➔ Código aberto
➔ DRY (Don't Repeat Yourself)
Mundo sobre os trilhos
➔ Rails Console
➔ Migrations
➔ RubyGems
➔ ActiveRecord
➔ ActiveController
➔ ActiveView
Preparando a subida no vagão
➔ Development, Testing and Production
➔ Rails Generate ( Scaffold, ... )
➔ Rails sever
➔ Rails console
Iniciar a viagem
Quanto tempo vc demora para fazer um
CRUD?
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