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

[PDF] Repensando o Desenvolvimento Web com Ruby on Rails