Ruby On Rails

Post on 29-Jan-2023

0 views 0 download

transcript

Ruby On Rails

Felipe Feichas 19179Mikaele 17332

Ruby

Ruby é uma linguagem de programação

● Multiparadigma

– (suporta mais de um paradigma de programação)● Tipagem dinâmica

– Não precisamos declarar tipos● Gerenciamento de memória automático

Tipos de Dados

Não existem "tipos primitivos" em Ruby; todos os tipos são classes:

Numeric é uma classe abstrata que representa números

● Integer

– Fixnum

– Bignum● Float

Tipos de Dados

● String pode ser delimitado por apóstrofes (') ou aspas ("). Ex: 'azul'

● Symbol é semelhante a string, mas dois símbolos iguais possuem o mesmo endereço de memória, é ótimo para se utilizar como índice num Hash. É definido com dois pontos (:). Ex: :nome

● Array são arrays dinâmicos, usados para representar matrizes e vetores. É delimitado por colchetes ([]) e cada valor é separado por vírgula. Ex: [4, 'azul', :termometro]

Tipos de Dados

● Hash é um vetor associativo é dinâmico. Delimitado por chaves ({}), onde o índice precede o valor com um sinal '=>'.

Ex: {:controller => 'user', :action => 'index'}.

● Regexp representa expressões regulares, delimitadas por //.

Rails

O nome rails faz referência justamente ao uso de faz referência justamente ao uso de convençõesconvenções, que correspondem aos “trilhos” seguidos pelo desenvolvedor no processo de desenvolvimento.

Fornecendo todos os pontos para o desenvolvimento de uma aplicação web.

Ruby on Rails● É um framework para desenvolvimento agil de

aplicações web

● Tem como base o padrão MVC

● Ótima escalabilidade

Ruby on Rails● DRY - Don't Repeat Yourself: foco no desenvolvimento da

modelagem e view, já que para o problemas classicos já descobriram uma solução.

● CoC - Convention over Configuration: seguir rigorosamente seus padrões, pois foi projetado para não gastarmos tempo configurando todo o ambiente do projeto.

Quem usou?

O que é gem?● É uma biblioteca, um conjunto de arquivos Ruby reusáveis,

etiquetada com um nome e uma versão.

● Implementa funcionalidades não cria aplicações inteiras.

Entendendo o Framework

● Model

● Controller

● Views

● Routes

● Config/database.yml

● Gemfile

● Assets

Model

Active Record

O Active Record é o M do MVC – modelo e responsável pela lógica de negocio da aplicação.

Ou seja, é o responsável pelo sistema de mapeamento de objeto relacionalmapeamento de objeto relacional, que facilita o uso de objetos de negócios cujos dados requer o armazenamento persistente com um banco de dados.

Controller

View

View

Routes

Database.yml

Gemfile

Gemfile

Assets

Resumindo

Fonte: http://intertwingly.net/slides/2005/imab/education.html

Blog simples

• Ruby on rails

• Mysql

• WEBrick

• IDE netbeans.

Instalar Rails windows

Para instalar Ruby e Ruby on Rails

Baixe railsInstaller em http://railsinstaller.org/pt-BR

Instale o railsInstaller.

Para instalar mysql

Baixe libmysql.dll e coloque na pasta C:\...\RailsInstaller\Ruby1.9.3\bin

Criando projeto no netbeans:

• Novo projeto, nova aplicação ruby on rails.

• Escolha o nome.

• Selecione o banco.

• Selecione a versão do framework.

Criação da estrutura do projeto e Instalação das dependências.

Abra o terminal vá para a pasta do projeto e digite:rails s

rails generate scaffold post titulo:string conteudo:text

rails generate scaffold comentario autor:string conteudo:text post:references

class Post < ActiveRecord::Base has_many :comentarios end

class Comentario < ActiveRecord::Base belongs_to :post end

• rake db:create -> criação do banco.

• rake db:migrate ->alterar o banco.

• URL: http://localhost:3000/post/index

Alterar o arquivo config/route

Blog::Application.routes.draw do

resources :posts do

resources :comentarios

end

root 'posts#index'

<p class="notice"><%= notice %></p>

<p>

<b>Titulo:</b>

<%= @post.titulo %>

</p>

<p>

<b>Conteudo:</b>

<%= @post.conteudo %>

</p>

<h2>Comentarios</h2>

<% @post.comentarios.each do |comentario| %>

<p>

<b>Autor:</b>

<%= comentario.autor %>

</p>

<p>

<b>Comentario:</b>

<%= comentario.conteudo %>

</p>

<hr />

<% end %>

<h2>Adicione um comentario:</h2><%= form_for([@post, @post.comentarios.build]) do |f| %> <div class="field"> <%= f.label :autor %><br /> <%= f.text_field :autor %> </div> <div class="field"> <%= f.label :conteudo %><br /> <%= f.text_area :conteudo %> </div> <div class="actions"> <%= f.submit %> </div><% end %> <br /> <%= link_to 'Edit Post', edit_post_path(@post) %> |<%= link_to 'Back to Posts', posts_path %>

Troque o código da arquivo view/posts/show.html

Troque o create e destroy do controller comentario

def create

@post = Post.find(params[:post_id])

@comentario = @post.comentarios.create(comentario_params)

redirect_to post_path(@post)

end

def destroy

@post = Post.find(params[:post_id])

@comentario = @post.comentarios.find(params[:id]) @comentario.destroy

redirect_to post_path(@post)

end

Características do Rails Vantagens e Desvantagen

* Validação, relacionamento, gets e sets.

Características do Rails Vantagens e Desvantagen

* O banco e gerenciado pelo Active record

Inserindo um objeto no banco

* O banco e gerenciado pelo Active record

Ruby on Rails Hibernate

Inserindo um objeto no banco

* O banco e gerenciado pelo Active record

Ruby on Rails Hibernate

Consultas

Select * from Post

Select * from Post where id=?

Commit - @post.save

INSERT INTO `posts`(`id`, `titulo`, `conteudo`, `created_at`, `updated_at`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5])

Vantagem do Raisl: facilidade na alteração do código quando ocorre uma alteração no banco.

Desvantagens: Programador não precisa entender a fundo o sql e perda de controle do código.

View

Ruby on Rails JSF

Criando uma aplicação● $ rails _3.2.13_ new $ rails _3.2.13_ new blogblog -d mysql -d mysql

● $ cd blog

● Add gem 'devise' gem 'devise' no Gemfile

● Add gem 'will_paginate' no Gemfile

● $ bundle install$ bundle install

● Configurar password e user no database.yml

● $ rake db:create

Criando uma aplicação● $ rails g devise:install

● $ rails generate devise User

● $ rails g scaffold post titulo:string texto:text user:references

● $ rake db:migrate

● $ rails generate devise:views

● $ rails g model comentario nome:string comentario:text post:references

Criando uma aplicação#posts_controller

before_filter :authenticate_user!

>protege as controllers (quando adicionados logo após a >protege as controllers (quando adicionados logo após a definição da classe que não são) púbilcasdefinição da classe que não são) púbilcas

Criando uma aplicação#homes_controller.rb

class HomesController < ApplicationController

def index

@posts=Post.order("created_at DESC").paginate(:page => params[:page], :per_page => 1)

respond_to do |format|

format.html # index.html.erb

format.json { render json: @posts }

end

end

end

Criando uma aplicação#Views/home/index.html.erb

<% @posts.each do |p| %>

<h1><%= p.titulo%></h1>

<p><%=simple_format(p.texto)%></p>

Autor: <%=p.user.name %>

<%end%>

<%= will_paginate @posts %>

#routes.rb

resources :homes

resources :posts

devise_for :users

root :to => "homes#index"

Criando uma aplicação#Views/home/index.html.erb

<% @posts.each do |p| %>

<h1><%= p.titulo%></h1>

<p><%=simple_format(p.texto)%></p>

Autor: <%=p.user.name %>

<%end%>

<%= will_paginate @posts %>

#routes.rb

resources :homes

resources :posts

devise_for :users

root :to => "homes#index"