SlideShare ist ein Scribd-Unternehmen logo
1 von 57
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/

Weitere ähnliche Inhalte

Was ist angesagt?

TDC2013: ExtJS 4: Dicas e Melhores Practicas
TDC2013: ExtJS 4: Dicas e Melhores PracticasTDC2013: ExtJS 4: Dicas e Melhores Practicas
TDC2013: ExtJS 4: Dicas e Melhores PracticasLoiane Groner
 
Slides Testes de API com Codeception
Slides Testes de API com CodeceptionSlides Testes de API com Codeception
Slides Testes de API com CodeceptionJuciellen Cabrera
 
[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programaLoiane Groner
 
Javascript State of the Union 2015
Javascript State of the Union 2015Javascript State of the Union 2015
Javascript State of the Union 2015Huge
 
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...Loiane Groner
 
Linhas de produto de software a deep introduction
Linhas de produto de software   a deep introductionLinhas de produto de software   a deep introduction
Linhas de produto de software a deep introductionFranklin Silva
 

Was ist angesagt? (7)

TDC2013: ExtJS 4: Dicas e Melhores Practicas
TDC2013: ExtJS 4: Dicas e Melhores PracticasTDC2013: ExtJS 4: Dicas e Melhores Practicas
TDC2013: ExtJS 4: Dicas e Melhores Practicas
 
Slides Testes de API com Codeception
Slides Testes de API com CodeceptionSlides Testes de API com Codeception
Slides Testes de API com Codeception
 
[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa
 
Javascript State of the Union 2015
Javascript State of the Union 2015Javascript State of the Union 2015
Javascript State of the Union 2015
 
.NET e C# - Introdução Geral
.NET e C# - Introdução Geral.NET e C# - Introdução Geral
.NET e C# - Introdução Geral
 
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
 
Linhas de produto de software a deep introduction
Linhas de produto de software   a deep introductionLinhas de produto de software   a deep introduction
Linhas de produto de software a deep introduction
 

Ähnlich wie CRUDing Open Source - WhyDay - 19aug2010

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
 
APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito CertoRavan Scafi
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangElaine Naomi
 
Bdd rails 3
Bdd rails 3Bdd rails 3
Bdd rails 3tchandy
 
Prazer,Ruby On Rails
Prazer,Ruby On RailsPrazer,Ruby On Rails
Prazer,Ruby On RailsAlberto Leal
 
Gerenciando Projetos Com Ruby On Rails
Gerenciando Projetos Com Ruby On RailsGerenciando Projetos Com Ruby On Rails
Gerenciando Projetos Com Ruby On RailsRodrigo Urubatan
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Railstchandy
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceJosé Roberto Araújo
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Ruby On Rails: Por que sua Startup deve usar?
Ruby On Rails: Por que sua Startup deve usar?Ruby On Rails: Por que sua Startup deve usar?
Ruby On Rails: Por que sua Startup deve usar?Luiz Carvalho
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Railsoverduka
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filhorafarubert
 
Desenvolvimento web ágil e descomplicado usando ruby on rails
Desenvolvimento web ágil e descomplicado usando ruby on railsDesenvolvimento web ágil e descomplicado usando ruby on rails
Desenvolvimento web ágil e descomplicado usando ruby on railsMaurício Linhares
 
Conheça ROP - Programação orientada e trilhos​
Conheça ROP - Programação orientada e trilhos​Conheça ROP - Programação orientada e trilhos​
Conheça ROP - Programação orientada e trilhos​Lucas Teles
 
Novidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evoluçãoNovidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evoluçãoRafael Cruz, MCT, MBA
 
Palestra: Novidades do C# 7.0 - O FUTURO DO .NET E DO C#
Palestra: Novidades do C# 7.0  - O FUTURO DO .NET E DO C#Palestra: Novidades do C# 7.0  - O FUTURO DO .NET E DO C#
Palestra: Novidades do C# 7.0 - O FUTURO DO .NET E DO C#Glaucia Lemos
 

Ähnlich wie CRUDing Open Source - WhyDay - 19aug2010 (20)

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
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito Certo
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e Erlang
 
Bdd rails 3
Bdd rails 3Bdd rails 3
Bdd rails 3
 
Prazer,Ruby On Rails
Prazer,Ruby On RailsPrazer,Ruby On Rails
Prazer,Ruby On Rails
 
Gerenciando Projetos Com Ruby On Rails
Gerenciando Projetos Com Ruby On RailsGerenciando Projetos Com Ruby On Rails
Gerenciando Projetos Com Ruby On Rails
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Rails
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Ruby On Rails: Por que sua Startup deve usar?
Ruby On Rails: Por que sua Startup deve usar?Ruby On Rails: Por que sua Startup deve usar?
Ruby On Rails: Por que sua Startup deve usar?
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Rails
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filho
 
Desenvolvimento web ágil e descomplicado usando ruby on rails
Desenvolvimento web ágil e descomplicado usando ruby on railsDesenvolvimento web ágil e descomplicado usando ruby on rails
Desenvolvimento web ágil e descomplicado usando ruby on rails
 
Conheça ROP - Programação orientada e trilhos​
Conheça ROP - Programação orientada e trilhos​Conheça ROP - Programação orientada e trilhos​
Conheça ROP - Programação orientada e trilhos​
 
Novidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evoluçãoNovidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evolução
 
Palestra: Novidades do C# 7.0 - O FUTURO DO .NET E DO C#
Palestra: Novidades do C# 7.0  - O FUTURO DO .NET E DO C#Palestra: Novidades do C# 7.0  - O FUTURO DO .NET E DO C#
Palestra: Novidades do C# 7.0 - O FUTURO DO .NET E DO C#
 

Mehr von Plataformatec

Do your own hacking evening - RubyConf UR
Do your own hacking evening - RubyConf URDo your own hacking evening - RubyConf UR
Do your own hacking evening - RubyConf URPlataformatec
 
Product Owner - Simples como dizem? - Agile Tour 2011
Product Owner - Simples como dizem? - Agile Tour 2011Product Owner - Simples como dizem? - Agile Tour 2011
Product Owner - Simples como dizem? - Agile Tour 2011Plataformatec
 
As reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloAs reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloPlataformatec
 
Código Saudável => Programador Feliz - Rs on Rails 2010
Código Saudável => Programador Feliz - Rs on Rails 2010Código Saudável => Programador Feliz - Rs on Rails 2010
Código Saudável => Programador Feliz - Rs on Rails 2010Plataformatec
 
Writing your own programming language to understand Ruby better - Euruko 2011
Writing your own programming language to understand Ruby better - Euruko 2011Writing your own programming language to understand Ruby better - Euruko 2011
Writing your own programming language to understand Ruby better - Euruko 2011Plataformatec
 
Railties - Ruby Masters Conf - 26Feb2011
Railties - Ruby Masters Conf - 26Feb2011Railties - Ruby Masters Conf - 26Feb2011
Railties - Ruby Masters Conf - 26Feb2011Plataformatec
 
Rails 2.3, 3.0 and 3.1 - RubyConfBR - 26oct2010
Rails 2.3, 3.0 and 3.1 - RubyConfBR - 26oct2010Rails 2.3, 3.0 and 3.1 - RubyConfBR - 26oct2010
Rails 2.3, 3.0 and 3.1 - RubyConfBR - 26oct2010Plataformatec
 
Rails 3 - The Developers Conference - 21aug2010
Rails 3 - The Developers Conference - 21aug2010Rails 3 - The Developers Conference - 21aug2010
Rails 3 - The Developers Conference - 21aug2010Plataformatec
 
Rails 3 - RS on Rails - 21aug2010
Rails 3 - RS on Rails - 21aug2010Rails 3 - RS on Rails - 21aug2010
Rails 3 - RS on Rails - 21aug2010Plataformatec
 
O que há de novo no Rails 3 - Ruby on Rails no Mundo Real - 23may2010
O que há de novo no Rails 3 - Ruby on Rails no Mundo Real - 23may2010O que há de novo no Rails 3 - Ruby on Rails no Mundo Real - 23may2010
O que há de novo no Rails 3 - Ruby on Rails no Mundo Real - 23may2010Plataformatec
 
Project Rescue - Oxente Rails - 05aug2010
Project Rescue - Oxente Rails - 05aug2010Project Rescue - Oxente Rails - 05aug2010
Project Rescue - Oxente Rails - 05aug2010Plataformatec
 
The Plafatorma Way - Oxente Rails - 05aug2010
The Plafatorma Way - Oxente Rails - 05aug2010The Plafatorma Way - Oxente Rails - 05aug2010
The Plafatorma Way - Oxente Rails - 05aug2010Plataformatec
 
DSL or NoDSL - Euruko - 29may2010
DSL or NoDSL - Euruko - 29may2010DSL or NoDSL - Euruko - 29may2010
DSL or NoDSL - Euruko - 29may2010Plataformatec
 
Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009Plataformatec
 
Devise - RSLA - 13oct2009
Devise - RSLA - 13oct2009Devise - RSLA - 13oct2009
Devise - RSLA - 13oct2009Plataformatec
 
Thor - RSLA - 13oct2009
Thor - RSLA - 13oct2009Thor - RSLA - 13oct2009
Thor - RSLA - 13oct2009Plataformatec
 

Mehr von Plataformatec (16)

Do your own hacking evening - RubyConf UR
Do your own hacking evening - RubyConf URDo your own hacking evening - RubyConf UR
Do your own hacking evening - RubyConf UR
 
Product Owner - Simples como dizem? - Agile Tour 2011
Product Owner - Simples como dizem? - Agile Tour 2011Product Owner - Simples como dizem? - Agile Tour 2011
Product Owner - Simples como dizem? - Agile Tour 2011
 
As reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloAs reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
 
Código Saudável => Programador Feliz - Rs on Rails 2010
Código Saudável => Programador Feliz - Rs on Rails 2010Código Saudável => Programador Feliz - Rs on Rails 2010
Código Saudável => Programador Feliz - Rs on Rails 2010
 
Writing your own programming language to understand Ruby better - Euruko 2011
Writing your own programming language to understand Ruby better - Euruko 2011Writing your own programming language to understand Ruby better - Euruko 2011
Writing your own programming language to understand Ruby better - Euruko 2011
 
Railties - Ruby Masters Conf - 26Feb2011
Railties - Ruby Masters Conf - 26Feb2011Railties - Ruby Masters Conf - 26Feb2011
Railties - Ruby Masters Conf - 26Feb2011
 
Rails 2.3, 3.0 and 3.1 - RubyConfBR - 26oct2010
Rails 2.3, 3.0 and 3.1 - RubyConfBR - 26oct2010Rails 2.3, 3.0 and 3.1 - RubyConfBR - 26oct2010
Rails 2.3, 3.0 and 3.1 - RubyConfBR - 26oct2010
 
Rails 3 - The Developers Conference - 21aug2010
Rails 3 - The Developers Conference - 21aug2010Rails 3 - The Developers Conference - 21aug2010
Rails 3 - The Developers Conference - 21aug2010
 
Rails 3 - RS on Rails - 21aug2010
Rails 3 - RS on Rails - 21aug2010Rails 3 - RS on Rails - 21aug2010
Rails 3 - RS on Rails - 21aug2010
 
O que há de novo no Rails 3 - Ruby on Rails no Mundo Real - 23may2010
O que há de novo no Rails 3 - Ruby on Rails no Mundo Real - 23may2010O que há de novo no Rails 3 - Ruby on Rails no Mundo Real - 23may2010
O que há de novo no Rails 3 - Ruby on Rails no Mundo Real - 23may2010
 
Project Rescue - Oxente Rails - 05aug2010
Project Rescue - Oxente Rails - 05aug2010Project Rescue - Oxente Rails - 05aug2010
Project Rescue - Oxente Rails - 05aug2010
 
The Plafatorma Way - Oxente Rails - 05aug2010
The Plafatorma Way - Oxente Rails - 05aug2010The Plafatorma Way - Oxente Rails - 05aug2010
The Plafatorma Way - Oxente Rails - 05aug2010
 
DSL or NoDSL - Euruko - 29may2010
DSL or NoDSL - Euruko - 29may2010DSL or NoDSL - Euruko - 29may2010
DSL or NoDSL - Euruko - 29may2010
 
Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009
 
Devise - RSLA - 13oct2009
Devise - RSLA - 13oct2009Devise - RSLA - 13oct2009
Devise - RSLA - 13oct2009
 
Thor - RSLA - 13oct2009
Thor - RSLA - 13oct2009Thor - RSLA - 13oct2009
Thor - RSLA - 13oct2009
 

CRUDing Open Source - WhyDay - 19aug2010

Hinweis der Redaktion