SlideShare uma empresa Scribd logo
1 de 115
Baixar para ler offline
Repensando o Desenvolvimento Web com
                             Ruby on Rails
segunda-feira, 21 de setembro de 2009
Rails


segunda-feira, 21 de setembro de 2009
Comunidade



segunda-feira, 21 de setembro de 2009
Filosofia




segunda-feira, 21 de setembro de 2009
DanteRegis.com
                                             @danteregis

                                        Admin de Redes - TJ/SE




segunda-feira, 21 de setembro de 2009
DanteRegis.com
                                                       @danteregis

                                                  Admin de Redes - TJ/SE




                              http://slideshare.net/danteregis

segunda-feira, 21 de setembro de 2009
Você não vai aprender
                     Ruby on Rails aqui


segunda-feira, 21 de setembro de 2009
framework



segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
David Heinemeier Hansson
                                                           2004


segunda-feira, 21 de setembro de 2009
37signals




segunda-feira, 21 de setembro de 2009
1400+             desenvolvedores




segunda-feira, 21 de setembro de 2009
http://rubyonrails.com



segunda-feira, 21 de setembro de 2009
jul/2004   0.5
                                        dez/2005   1.0
                                        mar/2006   1.1
                                        jan/2007   1.2
                                        dez/2007   2.0
                                        jun/2008   2.1
                                        nov/2008   2.2
                                        mar/2009   2.3
                        algum dia (em 2009?)       3.0


segunda-feira, 21 de setembro de 2009
Empregos
                                        (fonte: indeed.com)


segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
MVC



segunda-feira, 21 de setembro de 2009
opiniated



segunda-feira, 21 de setembro de 2009
eXtreme Programming



segunda-feira, 21 de setembro de 2009
TDD



segunda-feira, 21 de setembro de 2009
REST



segunda-feira, 21 de setembro de 2009
modularização



segunda-feira, 21 de setembro de 2009
DRY



segunda-feira, 21 de setembro de 2009
Convention
                                           over
                                        Configuration


segunda-feira, 21 de setembro de 2009
KISS



segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
script/console



segunda-feira, 21 de setembro de 2009
Model




segunda-feira, 21 de setembro de 2009
Model




segunda-feira, 21 de setembro de 2009
Model




segunda-feira, 21 de setembro de 2009
Model
                        id: integer

                     name: string

                       price: float

              category_id: integer

                    stock: integer

             created_at: datetime

             updated_at: datetime




segunda-feira, 21 de setembro de 2009
Model
                        id: integer

                     name: string
                                        x = Product.new
                       price: float

              category_id: integer

                    stock: integer

             created_at: datetime

             updated_at: datetime




segunda-feira, 21 de setembro de 2009
Model
                        id: integer

                     name: string
                                        x = Product.new
                       price: float      x.name = "Pão Jacó"
              category_id: integer

                    stock: integer

             created_at: datetime

             updated_at: datetime




segunda-feira, 21 de setembro de 2009
Model
                        id: integer

                     name: string
                                        x = Product.new
                       price: float      x.name = "Pão Jacó"
              category_id: integer      x.stock = "100
                    stock: integer

             created_at: datetime

             updated_at: datetime




segunda-feira, 21 de setembro de 2009
Model
                        id: integer

                     name: string
                                        x = Product.new
                       price: float      x.name = "Pão Jacó"
              category_id: integer      x.stock = "100
                    stock: integer      x.price = 0.15
             created_at: datetime

             updated_at: datetime




segunda-feira, 21 de setembro de 2009
Model
                        id: integer

                     name: string
                                        x = Product.new
                       price: float      x.name = "Pão Jacó"
              category_id: integer      x.stock = "100
                    stock: integer      x.price = 0.15
             created_at: datetime       x.save
             updated_at: datetime




segunda-feira, 21 de setembro de 2009
Model




segunda-feira, 21 de setembro de 2009
Model



     INSERT INTO `products` COLUMNS (`name`, `price`,
     `stock`) VALUES ("Pão Jaco", 0.15, 100);




segunda-feira, 21 de setembro de 2009
Model




segunda-feira, 21 de setembro de 2009
Model

      Product.first




segunda-feira, 21 de setembro de 2009
Model

      Product.first

      Product.find_all_by_category_id(10)




segunda-feira, 21 de setembro de 2009
Model

      Product.first

      Product.find_all_by_category_id(10)

      Product.find_or_create_by_name("Margarina")




segunda-feira, 21 de setembro de 2009
Model

      Product.first

      Product.find_all_by_category_id(10)

      Product.find_or_create_by_name("Margarina")

      Product.count




segunda-feira, 21 de setembro de 2009
Model

      Product.first

      Product.find_all_by_category_id(10)

      Product.find_or_create_by_name("Margarina")

      Product.count

      Product.average('price')



segunda-feira, 21 de setembro de 2009
validations



segunda-feira, 21 de setembro de 2009
associations



segunda-feira, 21 de setembro de 2009
instance methods



segunda-feira, 21 de setembro de 2009
Model



                      class Product < ActiveRecord::Base

                      end




segunda-feira, 21 de setembro de 2009
Model
                      class Product < ActiveRecord::Base




                      end
segunda-feira, 21 de setembro de 2009
Model
                      class Product < ActiveRecord::Base
                        belongs_to :category




                      end
segunda-feira, 21 de setembro de 2009
Model
                      class Product < ActiveRecord::Base
                        belongs_to :category
                        validates_presence_of :name




                      end
segunda-feira, 21 de setembro de 2009
Model
                      class Product < ActiveRecord::Base
                        belongs_to :category
                        validates_presence_of :name
                        validates_numericality_of :stock




                      end
segunda-feira, 21 de setembro de 2009
Model
                      class Product < ActiveRecord::Base
                        belongs_to :category
                        validates_presence_of :name
                        validates_numericality_of :stock


                              def consume!
                                stock -= 1
                                save
                              end


                      end
segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
p = Product.new(:stock => "xxxxx")




segunda-feira, 21 de setembro de 2009
p = Product.new(:stock => "xxxxx")
                      p.save




segunda-feira, 21 de setembro de 2009
p = Product.new(:stock => "xxxxx")
                      p.save
                      #=> false




segunda-feira, 21 de setembro de 2009
p = Product.first
                          p.category
                          p.category.name = "Mudei o nome"
                          p.category.save




segunda-feira, 21 de setembro de 2009
has_many



segunda-feira, 21 de setembro de 2009
class Category < ActiveRecord::Base
                       has_many :products
                     end




segunda-feira, 21 de setembro de 2009
cat.products
                                        cat.products.new
                                        cat.products.first




segunda-feira, 21 de setembro de 2009
named scope



segunda-feira, 21 de setembro de 2009
class Product < ActiveRecord::Base
       named_scope :low_stock, :conditions => ['stock <= 10']
     end




segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
Product.low_stock
                                   #=> [.....]




segunda-feira, 21 de setembro de 2009
Product.low_stock
                                   #=> [.....]

                                   category.products.low_stock
                                   #=> [...]




segunda-feira, 21 de setembro de 2009
SQL?



segunda-feira, 21 de setembro de 2009
migrations



segunda-feira, 21 de setembro de 2009
controle de versão



segunda-feira, 21 de setembro de 2009
do banco de dados!



segunda-feira, 21 de setembro de 2009
sem SQL!



segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
class AddQuantityToCartProduct < ActiveRecord::Migration




segunda-feira, 21 de setembro de 2009
class AddQuantityToCartProduct < ActiveRecord::Migration
  def self.up
    add_column :cart_products, :quantity, :integer
  end




segunda-feira, 21 de setembro de 2009
class AddQuantityToCartProduct < ActiveRecord::Migration
  def self.up
    add_column :cart_products, :quantity, :integer
  end

  def self.down
    drop_column :cart_products, :quantity
  end
end




segunda-feira, 21 de setembro de 2009
com SQL!



segunda-feira, 21 de setembro de 2009
> 90%
                                        experiência pessoal


segunda-feira, 21 de setembro de 2009
ActionController



segunda-feira, 21 de setembro de 2009
session



segunda-feira, 21 de setembro de 2009
render



segunda-feira, 21 de setembro de 2009
filters



segunda-feira, 21 de setembro de 2009
class ApplicationController < ActionController::Base
  before_filter :check_login

  def check_login
    render :text => "acesso negado!"
  end
end




segunda-feira, 21 de setembro de 2009
flash



segunda-feira, 21 de setembro de 2009
flash[:notice] = "Você logou no sistema"




segunda-feira, 21 de setembro de 2009
cookies



segunda-feira, 21 de setembro de 2009
respond_to



segunda-feira, 21 de setembro de 2009
ActionView



segunda-feira, 21 de setembro de 2009
erb



segunda-feira, 21 de setembro de 2009
haml



segunda-feira, 21 de setembro de 2009
erb



segunda-feira, 21 de setembro de 2009
form_tag
                                        form_for


segunda-feira, 21 de setembro de 2009
<div>
        <span><%= flash[:notice] %></span>
      </div>
      <div>
        <% form_tag do %>
             <p>
               Usuário: <%= text_field_tag 'username' %>
             </p>
             <p>
               Senha: <%= password_field_tag 'password' %>
             </p>
             <p>
               <%= submit_tag 'Entrar' %>
             </p>
        <% end %>
      </div>

segunda-feira, 21 de setembro de 2009
Tempo para falar mal
                         de certas “soluções”


segunda-feira, 21 de setembro de 2009
Fim do tempo para
                              falar mal de certas
                                   “soluções”


segunda-feira, 21 de setembro de 2009
Comunidade



segunda-feira, 21 de setembro de 2009
RailsConf
                                        http://railsconf.com




segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
segunda-feira, 21 de setembro de 2009
Rails Summit Latin
                                       America
                                        http://railssummit.com.br



segunda-feira, 21 de setembro de 2009
13 e 14 de outubro
                                        São Paulo/SP




segunda-feira, 21 de setembro de 2009
Aldo França
segunda-feira, 21 de setembro de 2009
Great Blogs ‘n People



segunda-feira, 21 de setembro de 2009
Akita on Rails
                                         http://akitaonrails.com




segunda-feira, 21 de setembro de 2009
Carlos Brando
                                         http://nomedojogo.com




segunda-feira, 21 de setembro de 2009
Ozéias Sant’ana
                                           http://railsbox.org




segunda-feira, 21 de setembro de 2009
Bruno Miranda
                                         http://brunomiranda.com




segunda-feira, 21 de setembro de 2009
Ruby Onda
                                        http://rubyonda.com




segunda-feira, 21 de setembro de 2009
Nando Vieira
                                        http://simplesideias.com.br




segunda-feira, 21 de setembro de 2009
PeepCode
                                        http://peepcode.com




segunda-feira, 21 de setembro de 2009
RailsCasts
                                        http://railscasts.com




segunda-feira, 21 de setembro de 2009
http://slideshare.net/danteregis




segunda-feira, 21 de setembro de 2009
dante@danteregis.com




segunda-feira, 21 de setembro de 2009

Mais conteúdo relacionado

Destaque

Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webMiguel Galves
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em RailsJuan Maiz
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Marcelo Bohn
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Felipe Queiroz
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyDiego Rubin
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on RailsCJR, UnB
 
Rest API's with Ruby on Rails
Rest API's with Ruby on RailsRest API's with Ruby on Rails
Rest API's with Ruby on RailsRicardo Silva
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Joao Lucas Santana
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 

Destaque (18)

Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento web
 
SEA Rails na pratica
SEA Rails na praticaSEA Rails na pratica
SEA Rails na pratica
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em Rails
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on Rails
 
Ruby Beyond Rails
Ruby Beyond RailsRuby Beyond Rails
Ruby Beyond Rails
 
Rest API's with Ruby on Rails
Rest API's with Ruby on RailsRest API's with Ruby on Rails
Rest API's with Ruby on Rails
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 

Repensando o Desenvolvimento Web com Rails