Programação Web Aula 8 - Rails (Introdução)



Documentos relacionados
Programação Web Aula 10 - Testes, Javascript, Ajax

Tutorial Básico. Instalando e testando o Ruby on Rails no Windows

Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS

O Framework Rails. Diego Rubin

4 O Workflow e a Máquina de Regras

II Semana de Tecnologia da Informação. Rails Framework

Começando com Ruby on

Microsoft Access XP Módulo Um

Breve introdução. Uma breve introdução. Simplicidade e Poder. Rápido Dinâmico Robusto

Criando Frameworks Inteligentes com PHP. Uma abordagem prática: vantagens, aplicações e procedimentos.

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

ALUNES MANUAL DO USUÁRIO. Guia rápido Alunes

Documentação Symom. Agente de Monitoração na Plataforma Windows

Capítulo 04: Persistência com SQLite

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

02 - Usando o SiteMaster - Informações importantes

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Acessando um Banco de Dados

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Guia de instalação para ambiente de Desenvolvimento LINUX

Plano de Gerenciamento do Projeto

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

Programando em PHP. Conceitos Básicos

Scriptlets e Formulários

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Produto: Webscan Relatório II Programas desenvolvidos, testados e documentados

Nova Central de Atendimento Logicorp

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Sistema Gerador de Anúncios para Compra e Venda On-line. Leandro de Oliveira ol.leandro@gmail.com

Entendendo Rails. Fabio Akita Surgeworks Brazil Rails Practice Manager

Trecho retirando do Manual do esocial Versão 1.1

Manual Captura S_Line

NeXT Help Desk Manual do usuário. Abril/2011. NeXT Software

DNS DOMAIN NAME SERVER

Introdução. Entendendo os Controles. Definindo um controle. Introdução MOCKDOMAIN() Testando uma classe de domínio mockdomain

Sistema Click Principais Comandos

Manual de padronização para envio de orçamento e pedidos por para CristalTemper.

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

FRWTC800 - Desenvolvimento Web com Ruby on Rails

Manual de Administração DPS Printer 2.1 NDDigital S/A - Software

Introdução ao Tableau Server 7.0

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

Sumário. Parte I Introdução Introdução O Rails é ágil Explorando o conteúdo Agradecimentos... 19

Manual do Contribuidor. Portal de Internet. Projeto: Novo Portal de internet

DNS DOMAIN NAME SERVER

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Tutorial de instalação do ambiente Ruby, Ruby on Rails e MySQL no Ubuntu

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

Procedimentos para Reinstalação do Sisloc

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

MANUAL DE SUPORTE. Controle de Suporte. Este manual descreve as funcionalidades do controle de suporte.

Google Drive. Passos. Configurando o Google Drive

AULA 1 Iniciando o uso do TerraView

Manual do Visualizador NF e KEY BEST

Universidade Federal do Estado do Rio de Janeiro UNIRIO. Guia para criação do banco de dados de redes sociais

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Instalando o Lazarus e outros sistemas de suporte. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

PARANÁ GOVERNO DO ESTADO

Manual Integra S_Line

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web

1º passo: Instalando a rvm.

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS

CONCEITO: Moodle Moodle Moodle Moodle

Noções de. Microsoft SQL Server. Microsoft SQL Server

Desenvolvendo plugins WordPress usando Orientação a Objetos

MANUAL DO SISTEMA. Versão 1.00

Instalação e Conguração do Xoops. Rogério Vinhal Nunes 26 de março de 2007

Operador de Computador. Informática Básica

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

TUTORIAL III: ADICIONANDO AJUDA. Adicionando Ajuda

PROJETO INFORMÁTICA NA ESCOLA

Sistemas Distribuídos

Manual do AP_Conta. Manual do AP_Conta. Aplicativo para digitação e envio de contas médicas no padrão TISS

W o r d p r e s s 1- TELA DE LOGIN

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI

Aula 03 - Projeto Java Web

Ave: Manual do usuário

Android e Bancos de Dados

Repeater no GASweb. Regiões

Série ArcGIS Online I. Aprenda em 20. Módulo 4. Configure pop-ups.

Entendendo como funciona o NAT

TRIBUNAL DE CONTAS DO ESTADO DO RIO DE JANEIRO SISTEMA INTEGRADO DE GESTÃO FISCAL MÓDULO DELIBERAÇÃO 260/13 MANUAL DE UTILIZAÇÃO

Desenvolvendo Websites com PHP

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Elaborado por SIGA-EPT. Projeto SIGA-EPT: Manual do Usuário Almoxarifado

5 Detalhes da Implementação

Transcrição:

Programação Web Aula 8 - Rails (Introdução) Departamento de Informática UFPR 7 de Abril de 2014

1 Rails Básico Mágica Princípios Características Criando uma aplicação Levantando o Servidor Examinando o diretório padrão 2 Rails - As partes Controlador Analisando o funcionamento Mudando de uma controller#view para outro Modelos Criando um modelo Desvendando o Mistério: (1) O modelo Desvendando o Mistério: (2) O Controlador Desvendando o Mistério: (4) As variáveis Desvendando o Mistério: (4) As variáveis

MVC MVC = Model-View-Controller Trygave Reensraug, 1978-1979, Smalltalk. Ele observou que em um mesmo arquivo fonte, havia código para: a interação com o usuário (view); acesso e consistência a dados (model); uxo de execução (controller). Isto dicultava manutenção (componentes muito conexos). Solução encontrada: dividir física e logicamente estas três partes. o termo framework MVC refere-se a aplicativos de desenvolvimento que atendem a especicação acima.

Rails Básico Grande parte das ferramentas de desenvolvimento web usa algum MVC. Rails é um destes. Ciclo de interação com o usuário: o usuário interage com o navegador, enviando uma requisição ao servidor. o controlador capta esta requisição, consulta o modelo, e renderiza um novo documento que é enviado de volta.

Mágica Mágica O framework Rails faz muitas coisas automagicamente para o desenvolvedor. Isto ajuda só depois de saber a mágica. Cria classes de controlador; Conecta os métodos do controlador às respectivas views; Provê a interface básica para lidar com o banco de dados; Cria classes e bd para o modelo; utiliza convenções de nome para conectar modelo, controlador e views implicitamente. por exemplo: o controlador pode detectar valores nos dados dos form, colocá-las em variáveis de instância que cam implicitamente disponíveis para o código Ruby. facilita a criação de layouts; contém ambiente(s) de testes;

Princípios Princípios DRY (Don't Repeat Yourself) Cada elemento de informação deve aparecer uma única vez (minimiza memória). Com isto, alteraçõs ao código são altamente localizadas. Convention over Conguration A maior parte da interação entre as partes é implícita, e estabelecida por convenções e não por arquivos de conguração. Exemplo: nome da classe e nome da tabela. Paradigma Agile Development Desenvolvimento rápido ao invés de criação de documentos elaborados que culminam no aplicativo. Abordagem incremental.

Características Características Diferente de muitos outros frameworks, Rails não usa interfaces grácas, mas linhas de comando. Desenvolvido especicamente para desenvolver aplicações Web que usam banco de dados relacional. Bibliograa: Existe MUITO material na Web e em livros; A abordagem é muito parecida, e repletos de mágica. Isto diculta a compreensão do núcleo do framework, pois concentra-se nas beiradas. Nossa abordagem explica o funcionamento do framework.

Criando uma aplicação Criando uma aplicação Para criar uma aplicação, usa-se a linha de comando: Para criar a raiz de uma aplicação rails: > rails new Exemplo skip-bundle; o skip-bundle pede para não executar o programa bundle, responsável por incluir as gemas. Isto criar um diretório com o nome Teste. Atualize as gemas Veja seus subdiretórios e as gemas > cd Teste > bundle install --local > ls -l > less Gemfile

Levantando o Servidor Levantando o Servidor O diretório Teste é a raiz da aplicação que já pode responder a uma requisição Web. A partir da raiz, levantamos o servidor: > rails server Observe que o comando rails foi usado com outro parâmetro (server no lugar de new). Vão aparecer muitos outros ainda. A porta padrão é 3000, mas outra pode ser usada com -p<porta> O servidor foi levantado e como não temos nenhum modelo ou view especicado, a resposta padrão será renderizada.

Examinando o diretório padrão Examinando o diretório padrão Inicialmente vamos nos concentrar somente no diretório app, cujos subdiretórios incluem models, views e controllers. Normalmente, <navegador> localhost:3000 resolve. A litorina é máquina de estudos, e não tem navegador instalado. Tem de abrir navegador em outra máquina do dinf e abrir a url litorina:3000 (com o servidor levantado, claro)

Rails - As partes Os próximos slides mostram a criação de uma aplicação Rails. Baseia-se no livro Agile Web Development with Rails 4 A diferença aqui é vamos nos concetrar em entender como as partes MVC interagem, e não no deslumbramento das facilidades que ele traz. Para as próximas transparências, tenha em mente a gura abaixo:

Controlador Controlador Sua função é receber requisições, interagir com o BD e renderizar as páginas de resposta. Criação de um controlador > rails generate controller Say hello goodbye Este comando cria vários arquivos, dentre os quais destacamos: app/controllers/say_controller.rb app/views/say app/views/say/hello.html.erb config/routes (altera).

Analisando o funcionamento Analisando o funcionamento isto cria a url /say/hello e /say/goodbye. vericar o app/controllers/say_controller.rb. vericar o diretório app/views/say/. vericar o config/routes.rb + comando rake routes (a cola ou mágica que liga controlador à view). controlador é usado para acessar BD (ou informações externas); view é usada para mostrar estas informações. incluir @time = Time.now no controlador hello; <%= @time %> na view hello. A vida de uma variável de instância é de somente uma interação.

Mudando de uma controller#view para outro Mudando de uma controller#view para outro Compare a view say/hello com o arquivo hello.html.erb. O primeiro, só html. O segundo permite incluir comandos ruby com <%= <comando ruby> %>. Alguns comandos ruby são chamados helper methods. Alguns destes são geradores para HTML. Exemplo: <%= link_to "Goodbye", say_goodbye_path %> Existem vários helper methods padrão. Veja alguns em http://api.rubyonrails.org/classes/actionview/ Helpers/UrlHelper.html Conra o mapeamento (e outras formas de chamar - link acima)

Modelos Modelos Sua função é interagir com os dados. Não só buscar no BD, mas também fazer consistências. Para este exemplo, criaremos outra aplicação, e a criação de um modelo é através do comando > rails new depot > cd depot > rails generate scaffold <Tabela> <atributos> Ele também cria as view básicas para visualizar, incluir, excluir e alterar. Ele não cria a tabela, mas sim cria o schema. Para criar a tabela, é necessário executar o comando rake db:migrate.

Criando um modelo Criando um modelo Criar a tabela products, com três atributos: >rails generate scaffold Product title:string description:text \ image_url:string price:decimal xa Este comando cria um monte de arquivos. Iremos abordar somente alguns. Um arquivo importante é criada a migração, ou seja, um schema de criação desta tabela e seus atributos. conra no diretório db/migrate, com um timestamp. O programador pode alterar características dos atributos lá e depois criar a tabela com o comando rake db:migrate. Também pode voltar atrás e desfazer a tabela com rake db:rollback. Ao levantar o servidor, tudo funciona.

Desvendando o Mistério: (1) O modelo Desvendando o Mistério: (1) O modelo Há uma padronização de nomes entre classes e tabelas. O diretório app/models contém o arquivo product.rb. Este arquivo contém a classe Product. Como a migração criou a tabela products, todos os atributos da tabela são mapeados para a classe implicitamente.

Desvendando o Mistério: (2) O Controlador Desvendando o Mistério: (2) O Controlador O controlador deve ler a tabela e mapear os atributos para uma variável de instância, no caso, @products ou @product dependendo da url. Para entender como, rake routes Veja o arquivo app/controllers/products_controller.rb. Por m, observe as urls de cada requisição.

Desvendando o Mistério: (3) As Views Desvendando o Mistério: (3) As Views As view criadas estão no diretório app/views/<controlador>/. Neste caso, app/views/products/? > ls edit.html.erb index.html.erb new.html.erb show.json.jbuilder _form.html.erb index.json.jbuilder show.html.erb Cada uma delas é acessada com url diferente. Conra com rake routes.

Desvendando o Mistério: (4) As variáveis Desvendando o Mistério: (4) As variáveis Primeiro, como as variáveis são usadas para gerar páginas dinâmicas. Considere a página gerada com index. Controller carrega todos os produtos no método index. Neste caso, @products = Product.all. View: a variável products é usada em comandos ruby (entre <%... %>). Já a página gerada com show tem um truque: usa um mesmo método (set_product para aplicar @product = Product.find(params[:id]). Após a denição da classe, tem before_action :set_product, only: [:show, :edit, :update, :destroy]

Desvendando o Mistério: (4) As variáveis Desvendando o Mistério: (4) As variáveis A pergunta que não quer calar: de onde veio o parâmetro id? Em rails, os parâmetros são armazenados na hash params do controlador (não é visível fora do controlador). Independe se veio como POST ou GET. Outro caso é um novo produto: Veja o fonte da página de new. O campo de título: name="product[title]". O botão de criação dispara o método create no controlador. Este, por sua vez usa product_params (um atalho para todos os campos de params). http://guides.rubyonrails.org/action_controller_ overview.html#parameters