SlideShare una empresa de Scribd logo
1 de 18
Douglas Resende Camargo
douglas@maxstudio.com.br
MDL na RubyConf‟12
Locawebets
História
Ruby Criada em 1993 por Yukihiro “Matz” Matsumoto
Somente em 1998 Ruby começou a aparecer no ocidente
atraves de Dave Thomas e Andy Hunt
Em 2003, o framework Rails começou a ser escrito pelo
Dinamarques David Hansson
Em 2004 Rails foi publicado
Em 2010 lançamento do Rails 3.0
Um pouco de Ruby
5.times { print ‚Blaaa‛ }
> Cinco vezes imprima “Blaaa”
exit unless ‚flisol‛.includes? ‚iso‛
> Termine a menos que “flisol” contenha(ou inclua) a palavra
“iso”
[‘fred’, ‘guilherme’, ‘pedro’].each do |pessoa|
puts pessoa.capitalize
end
> Com as palavras „fred‟, „guilherme‟ e „pedro‟: pegue cada
pessoa e a imprima com a primeira letra maiúscula
MVC
Convenções - REST
Exibir/Buscar Criar Alterar Remover
REST/HTTP GET POST PUT DELETE
Rails (actions) show create update destroy
SQL select insert update delete
Instalação
MAC OSX & UBUNTU
http://github.com/danielvlopes/ruby-unix/
WINDOWS
http://railsinstaller.org/
Iniciando um Projeto
# Criando uma aplicação
rails new flisol -d postgresql
cd flisol/
# Inicia o servidor
rails server
# URL local da aplicação
http://localhost:3000/
Estrutura de Pastas
Arquivo Função
config/database.yml Contém informações para conexão
com o banco de dados
config/routes.rb Rotas das requisições HTTP
app/controllers Arquivos escritos em Ruby da
camada de controle
app/helpers Classes que facilitam algumas tarefas
da view
app/models Arquivos escritos em Ruby da
camada de modelo
app/views Contém uma pasta pra cada controller
que sua aplicação tiver
db/migrate Arquivos de migração, usados para
atualizar seu Banco de Dados
Scaffold
# Gerando modelo, controle e visões
rails generate scaffold user first_name:string
last_name:string
db/migrate/20130426210526_create_users.rb
# Cria Banco de Dados
rake db:create
# Atualiza o Banco para versão mais nova
rake db:migrate
# Criando usuário via console
User.create first_name: “Maria”, last_name: “Silva”
Scaffold
config/routes.rb
app/controllers/users_controller.rb
app/views/users/*
app/models/user.rb
def full_name
[first_name, last_name].join(“ “)
end
Operações Básicas
# Quantidade de registros de usuários
User.count
# Primeiro registro de usuário
u = User.first
# Atributo first_name
u.first_name
# Método full_name
u.full_name
# Atualizar um atributo
u.update_attribute(:last_name, “Ultimo Nome”)
Validações
# Validando a presença de :first_name
validates :first_name, :presence => true
# => true
User.create(:first_name => “Jaum”).valid?
# => false
User.create(:first_name => nil).valid?
# Mostrando erros
u = User.create
u.errors # => {:first_name=>[“can’t be blank”]}
u.save # => false
u.save! # => ActiveRecord::RecordInvalid:
Validation failed: First name can’t be blank
Validações
# Outros tipos de validação
validates_presence_of :name, :year
validates_numericality_of :year
validates_inclusion_of :year, :in => 2009..2099
validates_length_of :name, :minimum => 4
validates_format_of :name, :with => /[A-Z]d+/
GEM
# Onde encontrar
http://rubygems.org/
# Código fonte aberto
http://github.com/plataformatec/simple_form
# Instalando uma gem
Gemfile
gem “simple_form”
bundle install
Links
https://www.facebook.com/groups/rubyoncerrado/
http://rubyonrails.com/
http://apidock.com/ruby
http://www.ruby-doc.org/
http://guides.rubyonrails.org/
http://railscasts.com/
http://akitaonrails.com/
http://github.com/
http://why.nomedojogo.com/
OBRIGADO!
Douglas Resende Camargo
douglas@maxstudio.com.br

Más contenido relacionado

La actualidad más candente

Curso PHP - 1a. Aula (2013.2)
Curso PHP - 1a. Aula (2013.2)Curso PHP - 1a. Aula (2013.2)
Curso PHP - 1a. Aula (2013.2)Jonata Weber
 
Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]João Augusto
 
Implementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu ServerImplementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu ServerTiago Bezerra Dos Santos
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosCaio Cutrim
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaHenrique Gogó
 
Ruby on Rails: Embarque nesse Framework Web
Ruby on Rails: Embarque nesse Framework WebRuby on Rails: Embarque nesse Framework Web
Ruby on Rails: Embarque nesse Framework Webrafaelgaspar
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros InteligentesThiago Finardi
 
Como migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxComo migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxMarcelo Sabadini
 

La actualidad más candente (12)

Rest workshop
Rest workshopRest workshop
Rest workshop
 
Curso PHP - 1a. Aula (2013.2)
Curso PHP - 1a. Aula (2013.2)Curso PHP - 1a. Aula (2013.2)
Curso PHP - 1a. Aula (2013.2)
 
Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]
 
Implementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu ServerImplementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu Server
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem Segredos
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha Camarada
 
Php WatchDog
Php WatchDogPhp WatchDog
Php WatchDog
 
Vhosts dinâmico
Vhosts dinâmicoVhosts dinâmico
Vhosts dinâmico
 
Zabbix 3 0-cinfotec
Zabbix 3 0-cinfotecZabbix 3 0-cinfotec
Zabbix 3 0-cinfotec
 
Ruby on Rails: Embarque nesse Framework Web
Ruby on Rails: Embarque nesse Framework WebRuby on Rails: Embarque nesse Framework Web
Ruby on Rails: Embarque nesse Framework Web
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros Inteligentes
 
Como migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxComo migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para Linux
 

Similar a Introdução ao Ruby on Rails

TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...tdc-globalcode
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLtarginosilveira
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...tdc-globalcode
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Julio Betta
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosiMasters
 
Dockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechDockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechRafael Gomes
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009Caue Guerra
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntDenis L Presciliano
 

Similar a Introdução ao Ruby on Rails (20)

Minicurso Ruby on Rails
Minicurso Ruby on RailsMinicurso Ruby on Rails
Minicurso Ruby on Rails
 
Aula Ruby
Aula RubyAula Ruby
Aula Ruby
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Oficial
OficialOficial
Oficial
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOL
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Model View Controller
Model View ControllerModel View Controller
Model View Controller
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
Dockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechDockerizando aplicações em uma Fintech
Dockerizando aplicações em uma Fintech
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
 
Trab linux+sarg
Trab linux+sargTrab linux+sarg
Trab linux+sarg
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
 
Crud
CrudCrud
Crud
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando Ant
 

Introdução ao Ruby on Rails

Notas del editor

  1. - Alguemaquijáprogramaemalgumalinguagem?- Conhece Ruby, conhece Rails?- Praquemconheceessapalestraébemintrodutóriamesmo…- Trabalhona MDL Sistemas, e tambémsouinicianteem Ruby, conheço e trabalho com Ruby a menos de 1 ano
  2. Existe um eventochamadoRubyConfemSãoPauloqueérealizadotodoano e no anopassado a nossaequipefoiaté o evento- Essasloucasaitrabalhamcomigo =)
  3. - O eventoépatrocinadopelaLocaweb…. Maisseilah, tem gentequenãogosta da Locaweb…. Eugosto =)
  4. Então, euvoucontar um pouco da história do Ruby pravocês…Criadaem 1993 por Yukihiro Matsumoto, surgiu no ocidenteem 98 atraves de Dave Thomas e Andy HuntEm 2003 o framework Rails começou a serescritopelodinamarques David Hansson e somenteem 2004 foipublicadasuaprimeiraversãoEm 2010 foi um grandemarcoquandosurgiu o Rails 3.0
  5. # Testarcódigos no consoleA leitura do Ruby émuitoclara, como nesses exemplos:CincovezesimpraBlaaaTermine a menosque “flisol” contenha (ouinclua) a palavra “iso”Com as palavras “fred”,”guilherme” e “pedro”: peguecadapessoa e a imprima com a primeiraletramaiúscula
  6. Um poucosobre o MVC do RailsO Browser fazumarequisiçãopara o WebServerQuebusca no arquivo de rotas o quefazer com a URL requeridaE então o Dispatcher encontra o controller.O controller solicita/ounão, aoumachamada no model, quepodefazerumarequisiçãoaobanco de dados e retornaosvaloressolicitadosO controller renderiza a View e respondeaoWebServerqueentrega a requisiçãofeitapelo Browser
  7. Um pouco de Convenção RESTExistemosmétodos de requisições GET, POST, PUT e DELETEA convenção SUGERE queusemos GET para o método show no rails, POST para create, PUT para update e DELETE para destroyIssonãoquerdizerquevocêé obrigado a obedeceressa “sugestão”A ação show, seria o select do SQL, create seria o insert, update o proprio update e o destroy o delete
  8. Nãoqueroperdermuito tempo ensinandocomoinstalar Ruby ou o Rails, entãodeixeiessesdois links aquiO repositório do danielvlopesestásempreatualizado com um dos maisfáceispasso-a-passosobreinstalação de Ruby emambiente UnixE para windows, vcpodebaixar o instaladoratravés do site railsinstaller.orgÉmuitosimpesl =)
  9. Vamosiniciarcriando um projeto do RailsNo comando RAILS NEW, passamos o nome do projetoquequeremosiniciar o desenvolvimentoOpcionalmenteeupassei a opção “-d postgresql” jáinformando a qualbanco de dados euireiusarAbrimos a basta do projeto e entãopodemosexecutar o nossoservidorpratesteA URL de acessoserialocalhostpassando a porta 3000 (executaroscomandos no terminal)
  10. Vamosfalar um poucosobre a estrutura de pastas queforamgeradasOArquivoconfig/database.yml, contéminformaçõesparaconexão com o banco de dadosConfig/routes.rbguarda as rotas das requisições HTTPApp/controllers arquivosescritosem Ruby da camada de controleApp/helpers classes quefacilitamalgumastarefas da viewApp/models arquivosescritosem Ruby da camade de modeloounegócioApp/views contémuma pasta pracada controller quesuaaplicaçãotiverDb/migrate arquivos de migração, usadospraatualizarseubanco de dados
  11. Falando um poucodessafunçãomágica do rails, o SCAFFOLDNãoé a forma recomendadapra se fazerumaaplicação, maispraajudaragentenessaapresentaçãoireiusarele e explicaroqueelefazNóspassamos a função rails generate scaffolg, logo dizemos o nome do model, no singular e de preferencia ingles, e osatributoscomofirst_name do tipo string e last_name do tipo stringUm dos arquivosgeradopelo scaffold foiumamigraçãopara o banco de dados, Primeiramentenósprecisamoscriar o banco de dados com “rake db:create”E executar a função “rake db:mgirate” paraexecutarnossoarquivo de migraçãocriadopeloscaffolgAgora abrimos o console e vamoscriar um novo usuário de forma manual
  12. O Scaffold adicionou no nossoarquivo de rotas, umachamadapara o controller :usersNousers_controllerencontramososmétodos index, show, new, edit, create, update e destroyNo método index, vemosqueeletentatrazerTodososusuários e atribuir o resultadopraumavariável @users e responder no formato html oujsonEssavariavel @users tem um arroba “@” nafrente, quepermiteseracessivelnacamada de visãoEm views/users/index.html.erbdiz “peguecadausuário” e imprimaseufirst_name e last_name. Tambémémostrado links para “Exibir”, “Editar” e DeletarVamosabrir o model de usuário e vemosque o model estáliberandoacessoaosatributos :first_name e :last_nameVamoscriar um métodoaquichamadofull_nameE vamostestarele no show.html.erb
  13. Voltandoao console, vamosfalar um poucosobreoperaçõesbásicas no ModelA partir do momentoqueseuobjetoherdacaracterísticas do ActiveRecord, elevemcheio de métodosprafacilitarsuavida no desenvolvimentoContando a quantidade de registros de usuários com User.countTrazendo o primeiroregistro de usuário e atribuindoele a variavel “u”Pegandoatributofirst_name de “u”Acessando o métodofull_name de “u”Atualizando um atributo com update_attribute
  14. Vamosvalidar a presença de :first_name,issoquerdizerqueesseatributodeveráterseupreenchimentoobrigatório.Abrindo o model de User vamosadicionar a linha do validatesNo console vamostestar a inclusão do usuárioJãum e verificar se o registroévalidoAgora testaremos um registroinvalidoAinda no console, conseguimosteracessoaoserros da nossaaplicação com o método errorsPodemosanalisar a se o objetopodeser salvo com .saveE podemosretornar um erro com .save! (beng)
  15. Queroapresentartambémoutrasformas de validaratributos no modelValidando a presende de :nome e :ano, vocêpodevalidarmais de um atributonamesmalinhaValidando ANO comonumericoValidandoinclusao de ANO entre 2009 a 2099Validando o tamanho de nome com no mínimo 4 caracteresE validando um format with expressão regular
  16. A comunidade Ruby possuiumacomunidadebastanteativa de programadoresquecompartilhamcódigo. Para facilitaressecompartilhamento, a comunidade Ruby inventou as chamadasRubyBems, ou “GEMs”. Vocêpodeencontra-las no rubygems.orgUm exemplo de gem seria a simple_form, queauxilianacriação de formulários. Seucódigopodeseracessado no githubComo instalaruma GEM, abra o arquivoGemfile, e inclua gem passando o nome da gem entre aspas, opdionalmentevocêpodepassar a versão da gem quequerusarLogo, no terminal digitamos bundle install paraatualizar as gems
  17. Tambémquerolembrarquemantemosumacomunidade no facebook, o ruby on cerradoE deixaralguns links paraestudosobre Ruby e RailsPerguntas?
  18. Esperoqueiniciem um estudosobre rails e quetenhamgostadodessaapresentação.Obrigado!