Transcript
Page 1: Introdução ao Ruby On Rails

ruby on railsplataforma de desenvolvimento web

1

Page 2: Introdução ao Ruby On Rails

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

Page 3: Introdução ao Ruby On Rails

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

Page 4: Introdução ao Ruby On Rails

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

Page 5: Introdução ao Ruby On Rails

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

Page 6: Introdução ao Ruby On Rails

6

ruby on railsmodel, view, controller

http://www.rubyonrails.org/

:definir => “modelo”

6

Page 7: Introdução ao Ruby On Rails

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

Page 8: Introdução ao Ruby On Rails

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

Page 9: Introdução ao Ruby On Rails

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

Page 10: Introdução ao Ruby On Rails

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

Page 11: Introdução ao Ruby On Rails

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

Page 12: Introdução ao Ruby On Rails

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

Page 13: Introdução ao Ruby On Rails

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

Page 14: Introdução ao Ruby On Rails

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

Page 15: Introdução ao Ruby On Rails

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

Page 16: Introdução ao Ruby On Rails

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

Page 17: Introdução ao Ruby On Rails

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

Page 18: Introdução ao Ruby On Rails

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

Page 19: Introdução ao Ruby On Rails

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

Page 20: Introdução ao Ruby On Rails

20

ruby on railsaplicações web ágeis

http://www.rubyonrails.org/

fim

perguntas?

20


Top Related