O documento apresenta uma introdução ao framework Ruby on Rails. Cobre tópicos como instalação do Ruby e Rails, criação de um projeto Rails, geração de scaffolds para CRUDs, relacionamento de modelos, validações e rotas.
O que éo Rails?
• Meta-Framework MVC
• Desenvolvido em linguagem Ruby
23.
Rails
• Lançado emjulho de 2004
• Solução completa, produtiva com baixa
curva de aprendizagem
• Conceitos:
DRY (Don’t Repeat yourself)
Convention of configuration
24.
Rails - composição
•O Rails é a junção de 5 frameworks, são
eles:
Active Record (ORM)
Action Pack (MVC)
Action Mailer
Action Support
Action WebServices
25.
Rails - 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
26.
Rails - instalando
•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 – criandoo projeto
• 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
29.
Rails – criandoo projeto
• Vamos criar o projeto bug_tracking
30.
Rails – criandoo projeto
• Vamos subir o servidor com ruby script/server e entrar
na URL http://localhost:3000
31.
Rails – criandoo projeto
• Note que nosso projeto não tem nada.
Vejamos as configurações do nosso
ambiente:
32.
Rails – oprojeto
• 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)
33.
Rails
• Scripts padrõesdo 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
34.
Rails
• Antes decontinuar 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
35.
Rails
• Configuração dobanco 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 e
produção
36.
Rails – primeiroC.R.U.D
• Vamos utilizar o gerador scaffold
(andaime) que é um gerador de c.r.u.d
ruby script/generate scaffold project name:string
description:string owner:string
• Note que os atributos do seu modelo são
passados para o script, e ele irá gerar
uma migrate correspondente.
37.
Rails – primeiroC.R.U.D
• Saída do scaffold:
Migrations (migrações) são um forma de evoluir o
schema do banco de dados
38.
Rails – primeiroC.R.U.D
• Antes de analisarmos o ocorrido, vamos
terminar a criação do nosso modelo.
• Execute os comandos:
Rake db:create:all O comando db:migrate irá aplicar as
migrations que ainda não foram
Rake db:migrate aplicadas.
Rails – primeiroC.R.U.D
• Acesse a URL http://localhost:3000/projects
41.
Rails – primeiroC.R.U.D
• Vamos analisar os comandos do rake
utilizados:
Rake db:create:all
Esse comando utiliza o rake para criar as
tabelas para todos os modelos ainda não
criados
42.
Rails – primeiroC.R.U.D
Rake db:migrate
Construídas as tabelas devemos criar as
colunas.
As migrations servem para criação
incremental dos esquemas do banco de
dados dos modelos
43.
Rails – primeiroC.R.U.D
• Vejamos primeiro a migration gerada:
Nome do arquivo:
Número de série composto pela data
20090816190631_create_projects.rb
Tipo Nome da tabela
44.
Rails – primeiroC.R.U.D
• A migration de projeto está em:
• Código:
45.
• Código domodelo 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
Rails
• O Railscria um controlador para o modelo com
URL’s rest, como pode ser observado
• Essas url’s são criadas através de rotas
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
• As rotas ficam no arquivo config/routes.rb e são
associadas aos controladores assim:
map.resources :projects
57.
• Vejamos comoas views, telas, são
criadas:
Neste caso temos um layout
Para o nosso controlador
projects, mas poderiamos ter
apenas um layout para
aplicação toda:
application.html.erb
Rails
• Onde ficamos arquivos css e javascript?
A tag stylesheet_link_tag
facilita o acesso aos arquivos css
Código gerado na execução
da aplicação.
60.
Rails – primeiroC.R.U.D
• 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
61.
Rails
• Rotas (rakeroutes)
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
62.
Rails – primeiroC.R.U.D
• New.html.erb e Edit.html.erb
O new e o Edit são exatamente iguais,
Mudando apenas o nome do botão
submit. Suas operações são diferenciadas
pelo método HTTP utilizado.
Cria um formulário para o objeto informado,
gerando a URL dependendo do método
HTTP utilizado
Apresenta as mensagens de erro,
caso existam
63.
Rails – primeiroC.R.U.D
• 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 – segundoC.R.U.D
• 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
68.
Rails – segundoC.R.U.D
• Vamos adicionar uma validação na
migration criada
69.
Rails – segundoC.R.U.D
• Com as modificações feitas vamos
atualizar o banco
rake db:migrate
70.
Rails – segundoC.R.U.D
• Agora vamos relacionar projeto a bug
• Um projeto poderá ter muitos bugs
71.
Rails – segundoC.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
72.
Rails – segundoC.R.U.D
• Podemos pedir ao rake para nos informar
todas as rotas possíveis com o comando:
rake routes
73.
Rails – segundoC.R.U.D
• Vamos adicionar o link de “novo bug” em
projeto/show.html.erb
74.
Rails – segundoC.R.U.D
• Vamos corrigir bug/new.html.erb para que
esse realmente aponte para o projeto
75.
Rails – segundoC.R.U.D
• Depois de criado o bug vamos
redirecionar para página do projeto
Rails – segundoC.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