CRUDING OPEN SOURCE
    @josevalim - blog.plataformatec.com.br
Desenvolvedor Ruby
    há 3,5 anos
Autor de diversos projetos
      Open Source
READ
CREATE
Eu sou preguiçoso
Preguiça é uma virtude
PROVA #1
Eu trabalho na PlataformaTec
Eu desenvolvo aplicações
       em Rails
# app/models/comment.rb
class Comment < ActiveRecord::Base
  belongs_to :post
end
#1
    rails g scaffold
comment post:references
#2
Mudar o modelo
#3
Mudar o controller
#4
Mudar as views
Vamos consertar o passo #3
  “Mudar o controller”
INHERITED RESOURCES
# app/controllers/comments_controller.rb
class CommentsController < InheritedResources::Base
  belongs_to :post
end
É o fim do copy and paste!
PROVA #2
Aplicações tem formulários
        de contato
Fácil
...porém entediante!
#1
Criar um “fake” model
#2
Criar um mailer
#3
Criar a view para o mailer
E se tudo isso fosse
apenas um passo?
MAIL FORM
class ContactForm < MailForm
  append :request_ip, :user_agent

  attribute   :name,   :validate => true
  attribute   :email, :validate => /[^@]+@[^.]+.[w.-]+/
  attribute   :file,   :attachment => true
  attribute   :message

  def headers
    {
      :subject => "My Contact Form",
      :from => "your.email@your.domain.com"
    }
  end
end
Preguiça #win
UPDATE
Eu sou preguiçoso
Promoção => Contribuição
TDD
Pense primeiro na API,
  depois no código!
Excelente API
         ==
Excelente Propaganda
FORMTASTIC
Não sejam tímidos
Enviem e-mails para Ruby 5,
  RailsEnvy, Rafael Rosa,
       Fabio Akita...
Usuários & Contribuidores
Usuários &   Contribuidores
acts_as_dhh



class JoseValim < Person
  acts_as_dhh
end
Bug reporter:
 O README está errado

            Eu:
Por favor, envie um patch!
Bug reporter:
 Algo está errado!

        Eu:
Please do investigate
Cordas
Isso parece uma boa idéia,
   mas ainda está errado
“Anybody can say yes, someone
      needs to say no”

               Linus Torvalds
Envolva os seus colegas de
        trabalho
DEVISE
DELETE
Deleguem!
RAILS-FOOTNOTES
“when you don’t create things,
  you become defined by your
tastes rather than ability. your
 tastes only narrow & exclude
      people. so create.”

                           _why
Thanks!


     @plataformatec
blog.plataformatec.com.br
http://edgeguides.rubyonrails.org/

CRUDing Open Source - WhyDay - 19aug2010