rails na pratica

Post on 19-May-2015

5.644 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Uma visão geral de Ruby e Rails

TRANSCRIPT

Ruby on Rails na práticaRuby on Rails na prática

Túlio OrnelasTúlio Ornelas

AgendaAgenda

• Ruby• Rails• Instalando o Rails• Criando um projeto• Criando primeiro C.R.U.D• Validando C.R.U.D• Segundo C.R.U.D

• Criada em 1993 por Yukihiro Matz• Linguagem interpretada• Tipagem dinâmica• Fortemente tipada• Orientada a objetos• Livre• http://www.ruby-lang.org/

Um pouco sobre Um pouco sobre RubyRuby

Um pouco sobre Um pouco sobre RubyRuby

• Instalando Linux: sudo apt-get install ruby

Windows: One-click-installer

• http://www.ruby-lang.org/pt/downloads/

Mac OS/X: port install ruby

• Testando a instalação ruby -v Irb -v

Um pouco sobre Um pouco sobre RubyRuby

• Interpretando um arquivo

• Interpretando diretamente um comando

Um pouco sobre Um pouco sobre RubyRuby

• Em Ruby tudo é OO

Um pouco sobre Um pouco sobre RubyRuby

• Criando uma classe Em Ruby:

Em Java:

• Criando um objeto: Ruby:

Java:

Note a sintaxe simplificada! Não é necessáriodeclarar, a variável é criada quando utilizada.

Um pouco sobre Um pouco sobre RubyRuby

• Criando uma classe com método e construtor: Ruby Java

Um pouco sobre Um pouco sobre RubyRuby

• Variáveis: Local:

De instância:

De classe:

Variáveis de classe são comparadas a atributos estáticos (static) em java.

Um pouco sobre Um pouco sobre RubyRuby

• Métodos De instância:

Da classe:

Privados e Protegidos:

Um pouco sobre Um pouco sobre RubyRuby

Um pouco sobre Um pouco sobre RubyRuby

• Criando métodos de acesso as variáveis

• attr_accessor e attr_reader são métodos que geram os métodos get/set dinamicamente

• Reestruturando nossa classe User

Um pouco sobre Um pouco sobre RubyRuby

• Herança

Um pouco sobre Um pouco sobre RubyRuby

• Testando a herança

Um pouco sobre Um pouco sobre RubyRuby

• Booleans

As únicas coisas falsas em Ruby são nil e false

Um pouco sobre Um pouco sobre RubyRuby

Um pouco sobre Um pouco sobre RubyRuby

• LAB Dado um número imprimir todos os ímpares

até ele

Um pouco sobre Um pouco sobre RubyRuby

• Solução

Um pouco sobre Um pouco sobre RubyRuby

Quer aprender mais?Quer aprender mais?

http://www.pragprog.com/

• Meta-Framework MVC• Desenvolvido em linguagem Ruby

O que é o Rails?O que é o Rails?

• Lançado em julho de 2004

• Solução completa, produtiva com baixa curva de aprendizagem

• Conceitos: DRY (Don’t Repeat yourself) Convention of configuration

RailsRails

• O Rails é a junção de 5 frameworks, são eles:

Active Record (ORM) Action Pack (MVC) Action Mailer Action Support Action WebServices

Rails - composiçãoRails - composição

Rails - instalandoRails - instalando

• O Rails é uma rubygem, por isso precisamos do gem corretamente instalado.

• Uma “gem” é código ruby empacotado. Pode ser comparado ao .jar em Java.

• Rubygems é instalado junto com o ruby, caso contrário: sudo apt-get install rubygems

• Dependências: libsqlite3-dev ruby1.8-dev

• Abra o console e digite:gem install sqlite3-ruby (driver)gem install rails

*Confirme a instalação das dependências quando solicitado.

Rails - instalandoRails - instalando

Rails - instalandoRails - instalando

• Verificando a instalação

• Para criar um projeto utilize o comando: Rails <nome do projeto>

• Por exemplo: Rails bug_tracking

• Dessa forma o rails Irá gerar o arcabouço de um projeto MVC

Rails – criando o projetoRails – criando o projeto

Rails – criando o projetoRails – criando o projeto

• Vamos criar o projeto bug_tracking

• Vamos subir o servidor com ruby script/server e entrar na URL http://localhost:3000

Rails – criando o projetoRails – criando o projeto

• Note que nosso projeto não tem nada. Vejamos as configurações do nosso ambiente:

Rails – criando o projetoRails – criando o projeto

• Analisaremos apenas o diretório app por enquanto

• Controllers => Diretório com os controladores da aplicação

• Models => Os modelos do seu domínio• Views => As telas• Helpers => Classes de ajuda (conversão,

etc)

Rails – o projetoRails – o projeto

• Scripts padrões do Rails, vejamos dois: Generate => Cria uma estrutura básica para

um modelo. Server => Inicia o servidor da aplicação.

• Modo de usar: Ruby script/generate <parâmetros> Ruby script/server

RailsRails

• Antes de continuar o desenvolvimento devemos conhecer o rake

Um utilitário Ruby semelhante ao make do C/C++, ou Ant no Java.

Exemplo:• Rake db:create:all

RailsRails

• Configuração do banco em config/database.yml

O banco padrão do Rails é o SQLite3 que é um banco de dados embarcado

São criados 3 contextos: desenvolvimento, teste eprodução

RailsRails

• Vamos utilizar o gerador scaffold (andaime) que é um gerador de c.r.u.d

• Note que os atributos do seu modelo são passados para o script, e ele irá gerar uma migrate correspondente.

ruby script/generate scaffold project name:string description:string owner:string

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

• Saída do scaffold:

Migrations (migrações) são um forma de evoluir o schema do banco de dados

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

• Antes de analisarmos o ocorrido, vamos terminar a criação do nosso modelo.

• Execute os comandos:

Rake db:create:allRake db:migrate

O comando db:migrate irá aplicar asmigrations que ainda não foramaplicadas.

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

• Saída do db:migrate

• Acesse a URL http://localhost:3000/projects

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

• Vamos analisar os comandos do rake utilizados:

Esse comando utiliza o rake para criar as tabelas para todos os modelos ainda não criados

Rake db:create:all

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

Construídas as tabelas devemos criar as colunas.

As migrations servem para criação incremental dos esquemas do banco de dados dos modelos

Rake db:migrate

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

• Vejamos primeiro a migration gerada:

Nome do arquivo:

Número de série composto pela data

Tipo Nome da tabela

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

20090816190631_create_projects.rb

• A migration de projeto está em:

• Código:

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

• Código do modelo e do helper:

• Estão vazios pois ainda não possuem nenhuma regra de negócio!

• As colunas do banco serão injetadas pelo ActiveRecord como atributos no modelo

• Código do controlador• Método index

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

Rails – Active RecordRails – Active Record

• Vejamos alguns métodos que nossos modelos herdam de ActiveRecord::Base

• save

• find(id)

• find(:all, :conditions => “”) find(:first, :conditions => “”) find(:last, :conditions => “”) Parâmetros opcionais:

• :join, :order, :limit, :offset, :select, :readonly, :from, :group, :lock ...

• Mais métodos update_attributes(hash) destroy find_by_sql(string)

Rails – Active RecordRails – Active Record

• Dinamic finders find_all_by_name_and_age(name, age) find_by_name(name) find_by_age(name) find_all_by_name_or_middle_name(name,

middle_name) etc

Rails – Active RecordRails – Active Record

• Params é um hash do Rails que possui todos os atributos do request. :id é o identificador do atributo id.

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

RailsRails

• O flash é um hash que é apagado na próxima requisição, por isso ele é muito útil em guardar mensagens de sucesso, erro, etc.

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

• O Rails cria um controlador para o modelo com URL’s rest, como pode ser observado

• Essas url’s são criadas através de rotas

• As rotas ficam no arquivo config/routes.rb e são associadas aos controladores assim:

map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format'

map.resources :projects

RailsRails

• Vejamos como as views, telas, são criadas:

Neste caso temos um layoutPara o nosso controlador projects, mas poderiamos ter apenas um layout para aplicação toda:

application.html.erb

• Projects.html.erb

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

RailsRails

• Onde ficam os arquivos css e javascript?

A tag stylesheet_link_tagfacilita o acesso aos arquivos css

Código gerado na execuçãoda aplicação.

• Index.html.erb

A tag <% é utilizada para executar algum comando ruby e <%= para escapar algum valor. *H é uma função de um helper, serve para não escapar o html

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

RailsRails

• Rotas (rake routes)

projects_path listagem project para o show (detalhamento) new_project_path página de criação edit_project_path(project) página de edição

• New.html.erb e Edit.html.erbO new e o Edit são exatamente iguais, Mudando apenas o nome do botãosubmit. Suas operações são diferenciadas pelo método HTTP utilizado.

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

Cria um formulário para o objeto informado, gerando a URL dependendo do método HTTP utilizado

Apresenta as mensagens de erro, caso existam

• Nosso modelo ainda não implementa nenhuma regra de negócio, vamos incrementar:

Para isso vamos utilizar os métodos validates_

Iremos validar o nome, que deve ser único, obrigatório, maior que cinco (5), menor que cinqüenta (50) e o responsável é obrigatório

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

• Vejamos o novo código do modelo:

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

Rails – primeiro C.R.U.DRails – primeiro C.R.U.D

?

DúvidasDúvidas

• Vamos criar um novo modelo Bug que possui um projeto

• Vamos atualizar o nosso modelo projeto, para que este possua vários Bug’s

• Vamos relacionar os controladores

ruby script/generate scaffold bug project:belongs_to description:string

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Vamos adicionar uma validação na migration criada

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Com as modificações feitas vamos atualizar o banco

rake db:migrate

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Agora vamos relacionar projeto a bug• Um projeto poderá ter muitos bugs

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Com os modelos relacionados, vamos criar rotas relacionadas entre eles

• Para isso vamos editar o arquivo config/routes.db

• Removi a rota direta para bug

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Podemos pedir ao rake para nos informar todas as rotas possíveis com o comando:

rake routes

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Vamos adicionar o link de “novo bug” em projeto/show.html.erb

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Vamos corrigir bug/new.html.erb para que esse realmente aponte para o projeto

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Depois de criado o bug vamos redirecionar para página do projeto

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Resultadohttp://localhost:3000/projetos/1

http://localhost:3000/projetos/1/bugs/new

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Vamos melhorar a apresentação do projeto exibindo os bugs, adicione na página projeto/show.html.erb

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Resultado

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• Pronto! Agora precisamos apenas configurar nossa aplicação na página principal

• Delete a página public/index.html que é a página de apresentação do projeto

• E faça o mapeamento do controlador principal no arquivo config/routes.rb

Rails – segundo C.R.U.DRails – segundo C.R.U.D

• config/routes.rb

Rails – segundo C.R.U.DRails – segundo C.R.U.D

http://localhost:3000/

Rails – segundo C.R.U.DRails – segundo C.R.U.D

Quer aprender mais?Quer aprender mais?

http://www.pragprog.com/http://www.urubatan.com.br/

Ruby on Rails na práticaRuby on Rails na prática

ObrigadoObrigado

ornelas.tulio@gmail.comornelas.tulio@gmail.com

twitter.com/tuliostwitter.com/tulios

top related