O documento apresenta uma introdução ao framework Ruby on Rails. Ele discute como instalar o Ruby e o Rails, algumas características das linguagens como classes, herança e loops. Também mostra como gerar um projeto Rails inicial, implementar um CRUD básico com scaffold e examinar os principais componentes do framework como models, views e controllers.
3. Agenda
• Sobre o Ruby
• Como instalar
• Algumas estruturas da linguagem
• Sobre o Rails
• Como instalar
• Algumas Características do framework
• Primeiro CRUD
• Associações
• Segundo CRUD
3
4. Um pouco sobre Ruby
• Criada em 1993 por Yukihiro Matz
• Linguagem interpretada
• “Tipagem” dinâmica
• Orientada a objetos
• Livre
• http://www.ruby-lang.org/
4
5. Um pouco sobre Ruby
• Instalando
- Linux: sudo apt-get install ruby
- Windows: One-Click-Installer
• http://rubyinstaller.org/download.html
- Mac OS X: sudo port install ruby
• Testando a instalação
- ruby -v [tulios] ~ ruby -v
ruby 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0]
- irb -v irb 0.9.5(05/04/13)
[tulios] ~ irb -v
5
6. Um pouco sobre Ruby
• Interpretando um comando
- Interactive Ruby Shell (IRB)
[tulios] ~ irb
>> puts "Oi"
Oi
• Interpretando um arquivo
- <nome>.rb
[tulios] ~ ruby file.rb
6
7. Um pouco sobre Ruby
• Em Ruby tudo é OO
[tulios] ~ irb
>> 12.class
=> Fixnum
>> true.class
=> TrueClass
>> nil.class
=> NilClass
>> "Tulio".class
=> String
7
8. Um pouco sobre Ruby
• Booleans
- As únicas coisas falsas são nil e false
[tulios] ~ irb >> if 0
>> if 12 >> puts
>> puts "verdadeiro!" "verdadeiro!"
>> end >> end
verdadeiro! verdadeiro!
>> if nil >> if false
>> puts "falso!" >> puts "falso!"
>> end >> end
8
9. Um pouco sobre Ruby
• Variáveis
- Local user
- De instância @user
- De classe @@user
- Globais $user
• Variáveis de classe são comparadas a
atributos estáticos (static) em Java.
9
10. Um pouco sobre Ruby
• Criando uma classe
- Em Ruby Em Java
10
11. Um pouco sobre Ruby
• Criando um objeto
- Ruby
- Java
• Note a sintaxe simplificada, não é
necessário declarar o tipo da
variável.
11
12. Um pouco sobre Ruby
• Criando uma classe com método
- Ruby Java
12
13. Um pouco sobre Ruby
• Utilizando a classe no IRB
- Importar a classe: require
[tulios] ~ irb
>> require 'user'
=> true
>> user = User.new
=> #<User:0x1011cae60>
>> user.ola
=> "oi!"
13
14. Um pouco sobre Ruby
• Utilizando construtores
- Ruby Java
14
15. Um pouco sobre Ruby
• Analisando
- Não é necessário
definir o tipo de retorno
- Não é necessário
utilizar parênteses ().
15
16. Um pouco sobre Ruby
• Construtor e “sobrecarga” do
construtor
16
17. Um pouco sobre Ruby
• Métodos
- De instância
- Da classe
17
18. Um pouco sobre Ruby
• Vamos praticar!
[tulios] ~ irb
>> require 'user'
=> true
>> user = User.new "Tulio"
=> #<User:0x101238410 @nome="Tulio">
>> user.equals? "Karina"
=> false
>> User.compare "Tulio", "Renan"
=> false
18
19. Um pouco sobre Ruby
• Todo atributo em Ruby é privado!
?> user.nome
NoMethodError: undefined method `nome' for #<User:0x101238410 @nome="Tulio">
from (irb):6
19
21. Um pouco sobre Ruby
• Vamos testar!
[tulios] ~ irb
>> require 'user'
=> true
>> user = User.new
=> #<User:0x1012394a0 @nome="">
>> user.nome = "Tulio"
=> "Tulio"
>> user.nome
=> "Tulio"
21
22. Um pouco sobre Ruby
• Como criar o get e o set “na mão”?
[tulios] ~ irb
>> require 'user'
=> true
>> user = User.new
=> #<User:0x1012394a0 @nome="">
>> user.nome = "Tulio"
=> "Tulio"
>> user.nome
=> "Tulio"
22
23. Um pouco sobre Ruby
• Modificadores de acesso
- Privados e protegidos
- Públicos
• Modificador padrão, não é necessário explicitar
(Também podemos utilizar a palavra public)
23
24. Um pouco sobre Ruby
• Utilizando a classe em outro .rb
- Importar a classe: require
24
38. O que é o Rails?
• Meta-framework MVC
• Desenvolvido em linguagem Ruby
• Baseado em convenções
• http://guias.rubyonrails.pro.br/
38
39. Rails
• Lançado em julho de 2004
• Criado por David Heinemeir
Hansson
• Conceitos
- DRY (Don’t Repeat Yourself)
- Convention over Configuration
39
40. Rails - composição
• O Rails é a junção de 5 frameworks
- Active Record (ORM)
- Action Pack (MVC)
- Action Mailer
- Active Support
- Active Resource
- Action WebServices (1.2.6)
40
41. Rails - instalando
• O Rails é uma RubyGem
• Uma gem é código ruby
empacotado
[tulios] ~ gem -v
1.3.6
41
44. Rails - criando o projeto
• Abra o terminal e utilize o comando:
- rails <nome do projeto>
[tulios] ~ rails bug_tracking
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
...
• O Rails irá gerar o arcabouço de um
projeto MVC
44
45. Rails - criando o projeto
• Vamos subir o servidor
- ruby script/server
[tulios] ~/exemplo/bug_tracking ruby script/server
=> Booting Mongrel
=> Rails 2.3.4 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
- Acessar a URL http://localhost:3000
45
47. Rails - o projeto
• Analisaremos apenas o diretório
APP, por enquanto
Controllers
- Controladores da aplicação
Models
- Os modelos do seu domínio
Views
- As telas
Helpers
- Classes de ajuda
47
48. Rails - scripts
• Generate
- Cria uma estrutura básica para o modelo
• Server
- Inicia o servidor da aplicação
• Modo de usar:
- ruby script/generate <parâmetros>
- ruby script/server <parâmetros>
48
49. Rake
• Semelhante ao make do C/C++ ou
Ant do Java
• “A simple ruby build program with capabilities
similar to make.”
[tulios] ~ rake --version
rake, version 0.8.7
49
50. Rails - o projeto
• Configuração padrão do banco
- O banco padrão é o SQLite3, que é um
banco de dados embarcado
50
51. Rails - o projeto
• Configuração padrão do banco
51
52. Rails - 1º CRUD
• Vamos utilizar o gerador scaffold
(andaime)
- ruby script/generate scaffold project
name:string description:text owner:string
- Os atributos do modelo são passados no
script
52
54. Rails - 1º CRUD
• Vamos terminar a criação do
modelo
• Execute os comandos:
- rake db:create:all
- rake db:migrate
54
55. Rails - 1º CRUD
• Saída do db:migrate
[tulios] ~ exemplo/bug_tracking rake db:migrate
(in /Users/tulios/Documents/SEA/Palestras/Rails/exemplo/bug_tracking)
== CreateProjects: migrating ==============================
-- create_table(:projects)
-> 0.0016s
== CreateProjects: migrated (0.0017s) =======================
Migrations (migrações) são uma forma de
evoluir o schema do banco de dados
55
66. Rails - 1º CRUD
• Index no formato xml
• http://localhost:3000/projects.xml
66
67. Rails - 1º CRUD
• Código do controlador (show)
Params é um hash do Rails que possui
todos os atributos do request. :id é o
identificador do atributo id
67
74. Rails - 1º CRUD
• Views
Nesse caso temos um
layout para o
controlador projects,
mas poderiamos ter
apenas um layout para
aplicação toda.
application.html.erb
74
76. Rails - 1º CRUD
• Onde ficam os css e javascripts?
stylesheet_link_tag facilita
o acesso aos arquivos css
:defaults carrega todos os arquivos
javascript padrão do Rails
76
77. Rails - 1º CRUD
• index.html.erb
<% para executar algum comando e <%= para
escapar algum valor
77
78. Rails - 1º CRUD
• Método helper H
Não permite a execução do html armazenado
• Caso contrário
78
80. Rails - 1º CRUD
• Vamos incrementar o modelo
• Vamos utilizar:
- validates_
• O que vamos validar:
- nome será obrigatório, maior que 5 e
menor que 50
- responsável será obrigatório
80