Ruby on Rails
            DACA 2008.1
Felipe Ribeiro - felipernb@gmail.com
Ruby on Rails
linguagem de      framework de
programação    desenvolvimento web
Ruby é...
  Uma linguagem dinâmica, open
 source com foco na simplicidade
   e na produtividade. Tem uma
sintaxe elegante ...
Características do Ruby
• Orientado a objeto
• Tudo é um objeto, não há tipos primitivos.
• Herança única, com extensão po...
Influências

• Linguagem prática (Perl)
• Orientação a Objetos (Smalltalk)
• Metaprogramação (Smalltalk)
• Sintaxe (Smallta...
I always thought Smalltalk would beat Java, I just didn't
      know it would be called 'Ruby' when it did.
              ...
De Java para Ruby
•   Semelhanças:                •   Existem ferramentas
                                    de documenta...
De Java para Ruby
•   Diferenças - Ao contrário     •   Utiliza-se a palavra-
    de Java, em Ruby…                 chave ...
De Java para Ruby
•   Mais diferenças...               •   Não existe validação
                                         e...
De Java para Ruby
•   Mais diferenças...                  •   Pode-se sobrecarregar
                                      ...
class Person
  attr_reader :name #read-only access
  attr_accessor :age #read and write permission

  #Constructor - invok...
15,6%
dos programadores brasileiros já sabem Ruby
  Fonte: Evans Data, INFO Exame 08/2007
33%
dos programadores brasileiros esperam aprender até o
                    final de 2008
       Fonte: Evans Data, Info E...
Rails
Rails é um framework completo
  para o desenvolvimento de
 aplicações web com banco de
dados de acordo com o padrão
...
Princípios do Rails

• “DRY - Don’t Repeat Yourself” (Não se repita)
• “Convention over Configuration” (Convenção
  sobre c...
DRY - Don’t Repeat
       Yourself
• Talvez o princípio mais famoso do Rails, diz
  que você não deve repetir trabalho em ...
Convention over
      Configuration

• Você usa o que o Rails sugere...
• E em troca não precisa configurar nada.
Convention over
      Configuration
• Um exemplo rápido:
 • No desenho do projeto:
   • Um “Cliente” tem muitos “Carros”
  ...
You Ain’t Gonna Need
           It
• Estabelece que uma funcionalidade não deve
  ser adicionada ao produto até que esta s...
Less is More

• Um resultado de todos esses princípios,
  práticas e filosofia é o conceito de fazer
  menos software. Isso ...
Por dentro do Rails
• ActiveRecord (ORM)
• ActionPack (Controllers)
• ActionMailer (E-mail service)
• ActiveSupport (Class...
ActiveRecord
• O “molho secreto” do Rails
 • Para mapear uma tabela users para sua
    aplicação, você só precisa ter uma ...
Migrations
• Migration é um recurso do ActiveRecord
  que permite que você gerencie mudanças
  nas suas tabelas do BD usan...
Migrations
class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :name
 ...
ActionPack
  • Faz o mapeamento entre as URLs e os
     controllers/actions a serem chamados
class UsersController < Appli...
ActiveSupport
 • Vários recursos úteis, entre eles a validação
class Text < ActiveRecord::Base
    validates_presence_of :...
Estrutura de
diretórios do
     Rails
Scaffolding
• Ao executar o comando: User name:string
  ./script/generate scaffold
  age:integer

• É gerado:
 • A classe ...
Talk is cheap.
Show me the code!
Vamos agora desenvolver uma aplicação de
       gerenciamento de um blog
Upcoming SlideShare
Loading in...5
×

ruby02

590

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
590
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

ruby02

  1. 1. Ruby on Rails DACA 2008.1 Felipe Ribeiro - felipernb@gmail.com
  2. 2. Ruby on Rails linguagem de framework de programação desenvolvimento web
  3. 3. Ruby é... Uma linguagem dinâmica, open source com foco na simplicidade e na produtividade. Tem uma sintaxe elegante de leitura natural e fácil escrita.
  4. 4. Características do Ruby • Orientado a objeto • Tudo é um objeto, não há tipos primitivos. • Herança única, com extensão por módulos • Possibilidade de adicionar programação em runtime • Traços de orientação a aspectos • Otimizada para pessoas e não para máquinas
  5. 5. Influências • Linguagem prática (Perl) • Orientação a Objetos (Smalltalk) • Metaprogramação (Smalltalk) • Sintaxe (Smalltalk, Eiffell e Ada) • Tratamento de Exceções (Java e Python)
  6. 6. I always thought Smalltalk would beat Java, I just didn't know it would be called 'Ruby' when it did. -- Kent Beck
  7. 7. De Java para Ruby • Semelhanças: • Existem ferramentas de documentação • A memória é gerida embutidas (a de Ruby chama-se RDoc). A automaticamente através de um garbage documentação gerada collector. pelo RDoc tem um aspecto muito • Os Objetos são parecido aquela gerada pelo Javadoc. fortemente tipados. • Existem métodos públicos, privados e protegidos.
  8. 8. De Java para Ruby • Diferenças - Ao contrário • Utiliza-se a palavra- de Java, em Ruby… chave end para terminar a definição de • Não precisará de uma classe ao invés de se colocar chaves em compilar código-fonte, pois este é executado volta de blocos de diretamente. código. • Existem várias • Utiliza-se o require ao bibliotecas para invés de import. interface gráfica (GUI).
  9. 9. De Java para Ruby • Mais diferenças... • Não existe validação estática de tipos de dados. • Todas as variáveis de instância são privadas. • Não existe declaração de tipo de dados, estes são • Os parênteses nas associados a novos nomes de variáveis conforme se chamadas aos métodos são normalmente opcionais e necessite (por exemplo muitas vezes omitidas. a = [1,2,3] em vez de int[] a = {1,2,3}; • Tudo é um objeto, incluído ). numeros como 2 ou o 3.14159.
  10. 10. De Java para Ruby • Mais diferenças... • Pode-se sobrecarregar operadores como +, =, • Escreve-se foo = etc... Foo.new( "ola") em vez de foo = new Foo( "ola" ). • Pode-se alterar classes nativas da linguagem até • O construtor é sempre em tempo de execução. chamado “initialize” em vez do nome da classe. • Temos “mixin’s” em vez de interfaces. • Utiliza-se nil em vez de null
  11. 11. class Person attr_reader :name #read-only access attr_accessor :age #read and write permission #Constructor - invoked by Person.new def initialize(name,age) @name = name @age = age end def say_hi puts "#{@name} says hi" end def is_joe? @name=="joe" end end john = Person.new("John",25) john.say_hi #Will output "John says hi" puts "His name is not Joe!" unless john.is_joe?
  12. 12. 15,6% dos programadores brasileiros já sabem Ruby Fonte: Evans Data, INFO Exame 08/2007
  13. 13. 33% dos programadores brasileiros esperam aprender até o final de 2008 Fonte: Evans Data, Info Exame 08/2007
  14. 14. Rails Rails é um framework completo para o desenvolvimento de aplicações web com banco de dados de acordo com o padrão M.V.C. (Model-View-Control).
  15. 15. Princípios do Rails • “DRY - Don’t Repeat Yourself” (Não se repita) • “Convention over Configuration” (Convenção sobre configuração) • “You Ain’t Gonna Need It” (Você não vai precisar disso) • “Less is more” (Menos é mais)
  16. 16. DRY - Don’t Repeat Yourself • Talvez o princípio mais famoso do Rails, diz que você não deve repetir trabalho em sua aplicação, seja código, seja configuração ou qualquer outro aspecto. Quando você começa a copiar e colar coisas em vários lugares, é um forte sinal de que algo está errado. Hora de refatorar.
  17. 17. Convention over Configuration • Você usa o que o Rails sugere... • E em troca não precisa configurar nada.
  18. 18. Convention over Configuration • Um exemplo rápido: • No desenho do projeto: • Um “Cliente” tem muitos “Carros” • a client has many cars • Na programação do Rails: class Client has_many :cars end
  19. 19. You Ain’t Gonna Need It • Estabelece que uma funcionalidade não deve ser adicionada ao produto até que esta seja totalmente necessária. Todo desenvolvedor de software tem os momentos “Nossa, seria muito legal se a aplicação fizesse …” e então horas e horas são gastas em algo que não é necessário e que pode causar problemas depois.
  20. 20. Less is More • Um resultado de todos esses princípios, práticas e filosofia é o conceito de fazer menos software. Isso não significa fazer algo pela metade nem fazer de qualquer maneira, significa fazer o essencial e muito bem feito.
  21. 21. Por dentro do Rails • ActiveRecord (ORM) • ActionPack (Controllers) • ActionMailer (E-mail service) • ActiveSupport (Classes utilitárias, como de validação) • ActiveResource (Web services)
  22. 22. ActiveRecord • O “molho secreto” do Rails • Para mapear uma tabela users para sua aplicação, você só precisa ter uma classe assim: class User < ActiveRecord::Base end • Segundo a convenção do Rails, classes são em singular e tabelas em plural. Ele já tem a funcionalidade para reconhecer até os plurais irregulares em inglês, como Person - people. • Só com essa informação, Rails já carrega todos os campos da tabela como atributos do objeto.
  23. 23. Migrations • Migration é um recurso do ActiveRecord que permite que você gerencie mudanças nas suas tabelas do BD usando apenas Ruby para descrevê-las, além de proporcionar uma maneira de ter um controle de versão dessas mudanças • Para efetuar as mudanças, é usado o Rake, que é o equivalente ao Ant no mundo Rails rake db:migrate
  24. 24. Migrations class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.string :name t.integer :age t.timestamps end end def self.down drop_table :users end end
  25. 25. ActionPack • Faz o mapeamento entre as URLs e os controllers/actions a serem chamados class UsersController < ApplicationController #Accessed by mydomain.com/users or mydomain.com/users/index def index @users = User.find :all end #Accessed by mydomain.com/users/show/1 def show @user = User.find params[:id] end end
  26. 26. ActiveSupport • Vários recursos úteis, entre eles a validação class Text < ActiveRecord::Base validates_presence_of :title,:text validates_format_of :author_email, :with => /^([^@s]+)@((?:[-a-z0-9]+.)+[a-z]{2,})$/i end
  27. 27. Estrutura de diretórios do Rails
  28. 28. Scaffolding • Ao executar o comando: User name:string ./script/generate scaffold age:integer • É gerado: • A classe de modelo do User • O controller com as actions para Criar, Remover, Editar, e Visualizar (CRUD) os Users • Os templates para visualização relativos ao controller • A migration para gerar a tabela no BD
  29. 29. Talk is cheap. Show me the code! Vamos agora desenvolver uma aplicação de gerenciamento de um blog
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×