46
Mini-Curso de RubyOnRails Régis Eduardo Weizenmann Gregol [email protected]

Introdução Ruby 1.8.7 + Rails 3

Embed Size (px)

DESCRIPTION

Slides Mini-Curso de Ruby On Rails para o Meditec - Medianeira In Technology ministrado na UTFPR - Campus Medianeira

Citation preview

Page 1: Introdução Ruby 1.8.7 + Rails 3

Mini-Curso de RubyOnRails

Régis Eduardo Weizenmann Gregol

[email protected]

Page 2: Introdução Ruby 1.8.7 + Rails 3

“Um desenvolvedor não é um político, não é um religioso. Fazer afirmações com desconhecimento de

causa é um atestado de ignorância” Fábio Akita.

Repensando a Web com Rails (2006).

Page 3: Introdução Ruby 1.8.7 + Rails 3

Ruby != Rails

Page 4: Introdução Ruby 1.8.7 + Rails 3
Page 5: Introdução Ruby 1.8.7 + Rails 3

A Linguagem Criada pelo japonês Yukihiro Matsumoto ou

“Matz” em 1995;

Dinâmica e interpretada;

Influenciada por Perl, Lips e SmallTalk;

Em Ruby, tudo é objeto;

Todas as classes extend de Object;

Page 6: Introdução Ruby 1.8.7 + Rails 3

A Linguagem

Métodos retornam valor:puts “Hello World” => nil

Operação é método:eql, exists, extend

Page 7: Introdução Ruby 1.8.7 + Rails 3

CaracterísticasTipos básicos:

– Numeric;– String;– Symbol;– Array;– Hash;

Page 8: Introdução Ruby 1.8.7 + Rails 3

VariáveisLocais:

variavel = 1Instanciadas:

@variavel = “Ruby”Classe:

@@classe = Classe (static do Java)Globais:

$variavel = 900

Page 9: Introdução Ruby 1.8.7 + Rails 3

Comparandopublic double soma(double a, double b){

return a+b;}

def soma a,ba+b

end

Page 10: Introdução Ruby 1.8.7 + Rails 3

Instalando o Ruby

Windows:http://rubyforge.org/projects/rubyinstaller

Linux:sudo apt-get install ruby-full

Mac OS:sudo gem update --system

Page 11: Introdução Ruby 1.8.7 + Rails 3

Instalando o Rails

Windows:gem install rails

Linux:sudo gem install rails

Observação:gem install rails –v=3sudo gem install rails –v=2.2.2

Page 12: Introdução Ruby 1.8.7 + Rails 3

Instalando Banco de Dados

WindowsSQlite3: http://www.sqlite.org/download.htmlC:\system32 dll

MySQL: http://dev.mysql.com/downloads/

Linux:sudo apt-get install mysql-server

Page 13: Introdução Ruby 1.8.7 + Rails 3

O framework

Surgiu em 2004, criado por Dave ThomasDRY que significa Don't Repeat Yourself

Scaffold (CRUD)

Page 14: Introdução Ruby 1.8.7 + Rails 3

O framework

Arquitetura M-V-C

Page 15: Introdução Ruby 1.8.7 + Rails 3

O frameworkOu meta-framework

Composto por:

ActiveSupportActiveRecordActionPack

ActionMailerActiveResource

Page 16: Introdução Ruby 1.8.7 + Rails 3

ActiveSupport

Framework que contém coleções de diversas classes;

Extensões de bibliotecas consideradas úteis para uma aplicação em Ruby On

Rails

Page 17: Introdução Ruby 1.8.7 + Rails 3

ActiveRecord

Considerado um framework que contém uma camada de mapeamento objeto-

relacional, entre a aplicação e o banco de dados

Page 18: Introdução Ruby 1.8.7 + Rails 3

ActionPack

Framework HTML, XML, Javascripts, e controle de regras de negócio

Page 19: Introdução Ruby 1.8.7 + Rails 3

ActionMailer

Framework de recebimento de emails, capaz de realizar diversas operações

apenas com chamadas de entregas de correspondência

Page 20: Introdução Ruby 1.8.7 + Rails 3

ActiveResource

RESTful;Em si define um pequeno conjunto de

operações, as mais importantes são POST, GET, PUT e DELETE.

Page 21: Introdução Ruby 1.8.7 + Rails 3

Servidores e Banco de Dados

WEBrickMongrel

Sqlite3MySQLOracle

PostgreSQL

Page 22: Introdução Ruby 1.8.7 + Rails 3

Scripts

About:Informação sobre versão e componentes

Console:Console com o ambiente da aplicação

Dbconsole:Console padrão do banco de dados

Destroy:Remove código gerado

Page 23: Introdução Ruby 1.8.7 + Rails 3

Generate:Gera o código de uma aplicação

Plugin:Instalar/Desinstalar plugins

Runner:Automatizar tarefas da aplicação

ServerInicia o servidor de aplicação

Scripts

Page 24: Introdução Ruby 1.8.7 + Rails 3

Boas Práticas

Page 25: Introdução Ruby 1.8.7 + Rails 3

Boas PráticasConvenções

Modelos gordos

Controllers magros

Nomes de classes em inglês:Ex: Cliente = Customer;

Tabelas são classes no plural:Ex: Classe “Customer” Tabela “customers”

Chave primária é por convenção:Ex: nome_class_id = customers_id

Page 26: Introdução Ruby 1.8.7 + Rails 3

Criando um Projeto

rails new Projeto_Meditec –d mysql

rails new 'nome do projeto' –d (de database) banco de dados

Page 27: Introdução Ruby 1.8.7 + Rails 3

Estrutura Projeto

Page 28: Introdução Ruby 1.8.7 + Rails 3

Estrutura Projetoapp:

Onde fica os Controllers, Telas e Modelos

config:configurações da aplicação, banco, etc

db:guarda as migrações, esquemas e arquivos do banco

doc:documentação

lib:arquivos de biblioteca

log:os logs do servidor rails

public:arquivos externos (css, js, imagens)

Page 29: Introdução Ruby 1.8.7 + Rails 3

Estrutura ProjetoEstrutura ProjetoEstrutura ProjetoEstrutura ProjetoEstrutura Projetoscript:

scripts do rails (rails g, rails s)

test:arquivos de teste unitário, funcional

tmp:arquivos temporários do servidor, informações de sessão, cache,

migrações, esquemas e arquivos do banco

vendor:onde vai os plugins para a app

Gemfile:diretório onde é requerida as gems

Page 30: Introdução Ruby 1.8.7 + Rails 3

Gerando um Controller

rails generate controller Customer index new show edit create update destroy

Page 31: Introdução Ruby 1.8.7 + Rails 3

Gerando um Modelo

rails generate model Customer

Page 32: Introdução Ruby 1.8.7 + Rails 3

Gerando um Scaffold

rails generate scaffold Customer name:string rg:string cpf:string

Page 33: Introdução Ruby 1.8.7 + Rails 3

Relacionamentoshas_many (muitos pra um)

Ex: has_many :contacts

belongs_to (um pra muitos) ou (pertence à)

Ex: belongs_to :customers

has_and_belongs_to_many (muitos p/ muitos)

Ex: has_and_belongs_to_many :products

Ex: has_and_belongs_to_many :characteristics

has_one (um p/ um)

Ex: has_one :contacts

Ex: belongs_to :customers

Page 34: Introdução Ruby 1.8.7 + Rails 3

Migrations

Executadas em sequencial;

Desenvolvedor é responsável;

2 tarefas sempre:

Realizar alteração, ex:

add_column(:customers, :email, :string);

Desfazer alteração, ex:

remove_column(:email);

Page 35: Introdução Ruby 1.8.7 + Rails 3

Rake

Rake db:createComando para criar a base de dados

Rake db:migrateComando para migrar a base de dados

Rake db:destroyComando para destruir a base de dados

Page 36: Introdução Ruby 1.8.7 + Rails 3

Partials

<%= render :partial => "contacts" %>

Page 37: Introdução Ruby 1.8.7 + Rails 3

Form_HelpersAbaixo, uma lista dos FormHelpers disponíveis:

check_box fields_for file_field form_for

hidden_field label

password_field radio_button

text_area text_field

E uma lista dos FormTagHelpers: check_box_tag field_set_tag file_field_tag

form_tag hidden_field_tag

image_submit_tag password_field_tag radio_button_tag

select_tag submit_tag

text_area_tag text_

Page 38: Introdução Ruby 1.8.7 + Rails 3

Link_to

:method => :delete:method => :putMétodos HTTP::confirm => “Tem certeza?”

Page 39: Introdução Ruby 1.8.7 + Rails 3

Select

Page 40: Introdução Ruby 1.8.7 + Rails 3

Datas

<%= f.date_select :data_de_nascimento %>

<%= f.date_select :data_de_nascimento, :start_year => 1970 %>

Page 41: Introdução Ruby 1.8.7 + Rails 3

Validações

validates_presence_ofvalidates_uniqueness_of

validates_format_of :email, :with => /^[\w\d]+$/ :on => :create, :message => "e-mail inválido"

Page 42: Introdução Ruby 1.8.7 + Rails 3

Mensagens de Erro

Page 43: Introdução Ruby 1.8.7 + Rails 3

Form e Form_Builder

<% form_for(@customer) do |f| %> { blocos de código; }

<% end %><% f.fields_for :contacts do |builder| %>

{ blocos de código; }<% end %>

Page 44: Introdução Ruby 1.8.7 + Rails 3

Recomendações

Akita on RailsCarlos Brando => Nome do Jogo

Google Groups => rails-brflails.serviceweb.com

Page 45: Introdução Ruby 1.8.7 + Rails 3

Curiosidades

Page 46: Introdução Ruby 1.8.7 + Rails 3

Agradecimentos

Régis Eduardo Weizenmann [email protected]

https://sites.google.com/site/regiseduardogregol/http://www.r2rails.com.br/