Curso de Ruby e Ruby on Rails

Preview:

DESCRIPTION

Resumo do curso de Ruby e Ruby on Rails que já ministrei em 2009. NOTA: alguns emails e links podem não mais existir :(

Citation preview

Ruby-on-RailsMário Sérgio Coelho Marroquim

@mariomarroquim

Sobre o curso

• Curso prático para formar profissionais para o mercado que possam fazer a diferença e produzir resultados reais

• Foco na maior demanda do mercado: aplicações comerciais

Sobre as aulas

• Cada aula se dividirá em 3 partes– Explicação do assunto– Perguntas e respostas– Atividades práticas

Ruby?

• Surgiu em 1995

• Criada por Yukihiro Matsumoto, “Matz”

• Linguagem de programação TOTALMENTE orientada a objetos

• Linguagem de script interpretada

• Muito utilizada em scripts para as mais diversas finalidades

Ruby?

• Possui sintaxe absurdamente simples

• É totalmente extensível

• É suficientemente rápido

• Possui um sistema centralizado para distribuição de bibliotecas (gems), o Ruby Gems

• Comunidade grande

• Muita documentação disponível

Linguagem de programação?

• Uma linguagem de programação é– Um conjunto de instruções de alto nível que

o computador vai ter de executar– Uma linguagem mais “humana” que deve ser

convertida em uma “linguagem de máquina” (linguagem de baixo nível) para ser executada pelo computador

Como o Ruby funciona?

• O computador não entende o código-fonte escrito com linguagens de alto nível

• O computador precisa interpretá-lo e transformá-lo em algo que possa ser executado pelo seu processador

• Esse processo envolve interpretação do código-fonte

Como o Ruby funciona?

• Para cada SO existe um interpretador Ruby específico, capaz de interpretar o código-fonte (“.rb”) e executar a aplicação

• Ruby, portanto, é independente de SO

• Ruby possui interpretadores para Windows, Linux, MacOS, OS/2, etc

Orientação a objetos?

• Atualmente os programas são muito complexos

• Não dá para escrever todo o código-fonte em um só arquivo

• Não dá para espalhar o código-fonte entre vários arquivos de forma desorganizada e repetitiva a cada projeto

Orientação a objetos?

• É muito mais fácil trabalhar com objetos da vida real para dar instruções ao computador

• Tudo pode ser convertido em objetos

• Classes representam um modelo (especificação) para criação de objetos

• Uma classe define um tipo de objeto

Orientação a objetos?

• Um objeto chamado “cachorro” que vem da classe “animal” é diferente de um objeto “gol voyage” criado a partir da classe “carro”

• O código-fonte fica distribuído em classes diferentes

• Cada classe reúne atributos e funcionalidades (métodos) específicas

Orientação a objetos?

• Classes possuem atributos (estado) e funcionalidades (comportamento)

• Objetos da mesma classe podem se comportar de maneira diferente caso o valor de seus atributos seja diferente

• É um padrão para organizar todo o código-fonte em arquivos separados de modo que todos possam entender

Orientação a objetos?

Especificação deuma Conta

ATRIBUTOS+

COMPORTAMENTO

Nome: MárioSaldo: R$ 1.500,00

Nome: PauloSaldo: R$ 500,00

Nome: SaraSaldo: R$ 5.200,00

Orientação a objetos?

• Objetos ajudam a escrever as instruções para o computador de maneira mais humana e simples

• Classes representam bibliotecas muito úteis pois encapsulam atributos e comportamentos específicos que podem ser usados por qualquer um!

Orientação a objetos?

Orientação a objetos?

• Checklist– Classes– Objetos– Atributos (estado)– Métodos (comportamento)– Mensagens e parâmetros– Encapsulamento e divisão de interesses

Ferramentas especiais

• ruby – interpretador

• irb – terminal interativo

• ri – utilitário para ver documentação

• Só isso mesmo

Regras básicas

• Criação de um objeto– objeto = Tipo.new

• Atribuição de valores– variavel = valor

• Ruby é case sensitive

Regras básicas

• Nomes de classes seguem o camel case– Animal, EspecialidadeMedica

• Variáveis e métodos seguem outra forma– animal, gol_sedan, especialidade_medica

• Blocos de código começam e terminam com “{” e “}” ou “do ... end”

Tipos mais comuns

• Fixnum - 1, 456, -9856

• Float - 944.44, 12343,3543454

• Boolean – true ou false

• Date – representa uma data

• String – representa um texto qualquer (“..”)

Mãos na massa!

• Checklist– Hello word!– Utilização de variáveis– Interpolação de strings– Operações matemáticas– Constantes– Ranges– Arrays– Símbolos– Hashes– Procs/lambda

Mãos na massa!

• Checklist– If, else, unless– Métodos– Classes– Módulos– Tratamento de erros– Modelagem básica

Rails?

• Criado em julho de 2004 por David Heinemeier Hansson, “DHH”

• Framework fullstack para desenvolvimento web utilizando Ruby

• Atua em todas as camadas (MVC) de uma aplicação web

• Implementa a filosofia DRY

• Utiliza Convention over Configuration

Rails?

• Possui suporte completo a diversas tecnologias desde Ajax até Web Services

• Possui uma comunidade grande e uma enorme quantidade de plugins para todo o tipo de coisa

• Facilita muito o desenvolvimento de aplicações web reduzindo a quantidade de configurações e dependências necessárias para se iniciar um projeto

Fullstack?

• Rails é um pacote completo...

RUBY+

RAILS+

APACHE

JAVA+

HIBERNATE/JPA+

SPRING/STRUTS+

TOMCAT+

APACHE

Web?

• Modelo básico de funcionamento de uma aplicação web

CLIENTE(navegador, celular, etc)

SERVIDOR

Requisição(request)

Resposta(response)

MVC?

• Apenas um padrão para dividir as partes (camadas) de uma aplicação

• Model – Toda a lógica de negócios e interação com as bases de dados

• Controller – Redireciona o usuário de acordo com o que ele quer, controla acesso a determinados “lugares”, etc

• View – camada de visão (CSS, HTML, Javascript, flash, etc)

MVC?

• Modelo mais elaborado de funcionamento de uma aplicação web

CLIENTE(navegador, celular, etc)

Requisição(request)

Resposta(response)

C M

v

MVC?

• MVC by Rails– Mantenha o model “gordo”– Mantenha a view estúpida– “Seque” os controllers

Rails?

• O Rails tem um módulo para cada necessidade• Active Record – comunicação com os SGBDs• Action Pack

– Action View – geração de views– Action Controller – controle de fluxo

• Action Mailer – suporte completo a emails• Active Support – coisinhas legais• Action WebServices – WSDL, SOAP, REST

Mãos na massa!

• Checklist (Active Record)– Migrations– Models– Relacionamentos entre models– Validações– Operações CRUD– Finders dinâmicos– TDD (Test-Driven Development)

Mãos na massa!

• Checklist (Action Pack)– Geração de controllers– Criação de views– Utilização de templates– Sessão, autenticação e autorização– Ajax!!!– Plugins legais

Fim do começo...

• Ainda há muito o que aprender!

• http://guias.rubyonrails.pro.br/

• http://railscasts.com/

• http://peepcode.com/

• http://www.rubyinside.com.br/

• http://www.akitaonrails.com/