Introdução Ruby 1.8.7 + Rails 3

Preview:

DESCRIPTION

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

Citation preview

Mini-Curso de RubyOnRails

Régis Eduardo Weizenmann Gregol

regiseduardogregol@gmail.com

“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).

Ruby != Rails

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;

A Linguagem

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

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

CaracterísticasTipos básicos:

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

VariáveisLocais:

variavel = 1Instanciadas:

@variavel = “Ruby”Classe:

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

$variavel = 900

Comparandopublic double soma(double a, double b){

return a+b;}

def soma a,ba+b

end

Instalando o Ruby

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

Linux:sudo apt-get install ruby-full

Mac OS:sudo gem update --system

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

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

O framework

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

Scaffold (CRUD)

O framework

Arquitetura M-V-C

O frameworkOu meta-framework

Composto por:

ActiveSupportActiveRecordActionPack

ActionMailerActiveResource

ActiveSupport

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

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

Rails

ActiveRecord

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

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

ActionPack

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

ActionMailer

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

apenas com chamadas de entregas de correspondência

ActiveResource

RESTful;Em si define um pequeno conjunto de

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

Servidores e Banco de Dados

WEBrickMongrel

Sqlite3MySQLOracle

PostgreSQL

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

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

Boas Práticas

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

Criando um Projeto

rails new Projeto_Meditec –d mysql

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

Estrutura Projeto

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)

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

Gerando um Controller

rails generate controller Customer index new show edit create update destroy

Gerando um Modelo

rails generate model Customer

Gerando um Scaffold

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

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

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);

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

Partials

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

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_

Link_to

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

Select

Datas

<%= f.date_select :data_de_nascimento %>

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

Validações

validates_presence_ofvalidates_uniqueness_of

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

Mensagens de Erro

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 %>

Recomendações

Akita on RailsCarlos Brando => Nome do Jogo

Google Groups => rails-brflails.serviceweb.com

Curiosidades

Agradecimentos

Régis Eduardo Weizenmann Gregolregiseduardogregol@gmail.com

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