ruby on railsplataforma de desenvolvimento web
1
2
ruby on railsíndice de conteúdos
http://www.rubyonrails.org/
i n t r o d u ç ã o
f i l o s o f i a & a r q u i t e c t u r a
m o d e l s
c o n t r o l l e r s
v i e w s
e x e m p l o p r á t i c o - l o j a o n l i n e
2
ruby on railsplataforma de desenvolvimento web
http://www.rubyonrails.org/
:definir => “filosofia”
:definir => “origem”
tornada pública em 2004 por David Heinemeier Hansson, tendo sido extraída de uma aplicação real
licenciada sob a licença MIT – Software Livre
= +
multi-plataforma (Windows, Linux, MacOS X, *BSD)
convenção vem antes da configuraçãoa plataforma assume determinados prossupostos que facilitam e tornam o processo de desenvolvimento mais rápido -- no entanto, essas convencções podem ser modificadas
dry - don’t repeat yourself (evite repetições)opção de desenho que tenta minimizar as repetições de código numa aplicação -- cada conceito deverá estar expresso num único sítio.
estrutura pré-definidaassume o padrão de desenho model-view-controller e a utilização de uma base de dados através de ORMtambém tem uma estrutura de pastas pré-definida, onde cada módulo tem o seu local apropriado
3
4
ruby on railscaracterísticas principais
http://www.rubyonrails.org/
model-view-controllerpadrão de desenho que divide em três componentes distintos a forma de interagir com uma aplicação
modelo - mantêm o estado da aplicação (tabelas)view - interface com o utilizador (html, javascript)controller - recebem eventos do exterior, interagem com o modelo e devolvem output
:definir => “arquitectura”
4
5
ruby on railsmodel, view, controller
http://www.rubyonrails.org/
:definir => “modelo”
ActiveRecord -- object-relational mappingpadrão de desenho que abstrai as interacções com o modelo de dados, efectuando o mapeamento entre classes e entidades
‣ zero linhas de código SQL‣ suporta vários SGBDs (Oracle, SQL Server, MySQL, etc)‣ cada modelo corresponde tipicamente a uma tabela ou relação entre tabelas‣ lógica de negócio implementada no modelo e não na base de dados‣ uma instância da classe é uma linha na tabela
5
6
ruby on railsmodel, view, controller
http://www.rubyonrails.org/
:definir => “modelo”
6
7
ruby on railsmodel, view, controller
http://www.rubyonrails.org/
:definir => “controller”
ActionControllero controlador é o centro lógico da aplicação:
‣ coordena as interacções entre o utilizador, o interface de utilização e o modelo de dados‣ responsável pela identificação das acções a desempenhar‣ gere os pedidos HTTP, as sessões, cookies, etc
neste exemplo
‣ o pedido HTTP de origem terá sido do tipo: http://localhost/projectos/‣ é criado uma variável de instância do controlador, com uma lista de todos os projectos registados na base de dados‣ uma vez executado o código do método, o controlo é passado à view
7
8
ruby on railsmodel, view, controller
http://www.rubyonrails.org/
:definir => “view”
ERb - ruby embebido em htmlas views são blocos de html com conteúdo dinãmico proviniente de código ruby
‣ ficheiros com pedaços de html/javascript e Ruby -- templates
neste exemplo
‣ o objecto @projectos é o array de instâncias da classe Projecto, devolvido pelo controller‣ as tags <% %> delimitam código executável que não deve ser traduzido para HTML‣ as tags <%= %> delimitam código que deve ser ser visualizável
8
9
ruby on railsorganização
http://www.rubyonrails.org/
:definir => “estrutra de um projecto”
pastas mais relevantes
‣ app‣ controllers - controladores‣ models - modelos‣ views - views, organizadas por controlador‣ layouts - views comuns a toda a aplicação‣ controllerA‣ controllerB‣ ...
‣ config - ficheiros de configuração da aplicação‣ db‣ migrate - migrações (criação / alteração do modelo de dados)
‣ public - a raíz da aplicação (wwwroot)‣ images‣ javascripts‣ stylesheets
‣ script - vários scripts ruby (gerar código, iniciar servidor web, etc.)‣ vendor‣ plugins - plugins adicionais
9
10
ruby on railsexemplo real
http://www.rubyonrails.org/
:definir => “catálogo de produtos online”
gerir os produtos (administração)
1. criar o projecto:$ rails loja$ cd loja
2. criar a base de dados:$ mysqladmin -u root create loja_development
3. criar a tabela e o modelo dos produtos:$ ruby script/generate model Product
4. alterar a migração gerada:$ edit db/migrate/001_create_products.rb
5. executar as migrações:$ rake db:migrate
6. criar o controlador de administraçãõ:$ ruby script/generate controller admin
7. definir o scaffold no controlador:$ edit app/controllers/admin_controller.rb
8. executar o servidor web:$ ruby script/server
10
11
ruby on railsexemplo real
http://www.rubyonrails.org/
:definir => “catálogo de produtos online”
alterações ao modelo de dados e validações
1. criar a migração:$ ruby script/generate migration add_price$ edit db/migrate/002_add_price.rb
2. actualizar a base de dados:$ rake db:migrate
3. alterar o modelo dos produtos e testar: $ edit app/models/product.rb$ script/server
11
12
ruby on railsexemplo real
http://www.rubyonrails.org/
:definir => “catálogo de produtos online”
alterar o visual da listagem - #1
1. mudar do scaffold dinâmico para estático:$ ruby script/generate scaffold product admin
2. criar (copiar?) os ficheiros CSS:$ edit public/stylesheets/loja.css
3. alterar o recém-criado layout do controlador:$ edit app/views/layouts/admin.rhtml
12
13
ruby on railsexemplo real
http://www.rubyonrails.org/
alterar o visual da listagem - #2
4. alterar o template que mostra a listagem:$ edit app/views/admin/list.rhtml
13
14
ruby on railsexemplo real
http://www.rubyonrails.org/
:definir => “catálogo de produtos online”
criação da página principal
1. criar o controlador da loja:$ ruby script/generate controller store index
2. alterar o controlador da loja:$ edit app/controllers/store_controller.rb
3. alterar o template do método index:$ edit app/views/store/index.rhtml
4. alterar o layout da página:$ edit app/views/layouts/store.rhtml
14
15
ruby on railsexemplo real
http://www.rubyonrails.org/
:definir => “catálogo de produtos online”
carrinho de compras - #1
1. criar os modelos do carrinho:$ edit app/models/carb.rb$ edit app/models/cart_item.rb
15
16
ruby on railsexemplo real
http://www.rubyonrails.org/
:definir => “catálogo de produtos online”
carrinho de compras - #2
2. alterar o controlador da loja:$ edit app/controllers/store_controller.rb
3. criar a view do carrinho: $ edit app/views/store/add_to_cart.rhtml
16
17
ruby on railsexemplo real
http://www.rubyonrails.org/
:definir => “catálogo de produtos online”
guardar encomendas - #1
1. criar novos modelos:$ ruby script/generate model Order$ ruby script/generate model LineItem
2. alterar as respectivas migrações: $ edit db/migrate/004_create_orders.rb$ edit db/migrate/005_create_line_items.rb
3. actualizar esquema de dados: $ rake db:migrate
17
18
ruby on railsexemplo real
http://www.rubyonrails.org/
:definir => “catálogo de produtos online”
guardar encomendas - #2
4. alterar os modelos gerados:$ edit app/models/order.rb$ edit app/models/line_item.rb
5. alterar o controlador da loja: $ edit app/controllers/store_controller.rb
18
19
ruby on railsexemplo real
http://www.rubyonrails.org/
:definir => “catálogo de produtos online”
guardar encomendas - #3
6. alterar a view do carrinho:$ edit app/views/store/add_to_cart.rhtml
7. criar a view do método ‘checkout’:$ edit app/views/store/checkout.rhtml
19
20
ruby on railsaplicações web ágeis
http://www.rubyonrails.org/
fim
perguntas?
20
Recommended