ecossistema rails campus party 09

108
Ecossistema Rails Desenvolvedores Web 2.0 Tuesday, January 20, 2009

Upload: fabio-akita

Post on 16-Apr-2017

5.031 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Ecossistema Rails   Campus Party 09

Ecossistema RailsDesenvolvedores Web 2.0

Tuesday, January 20, 2009

Page 2: Ecossistema Rails   Campus Party 09

AkitaOnRails

Tuesday, January 20, 2009

Page 3: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.akitaonrails.com

Page 4: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.locaweb.com.br/rails

Page 5: Ecossistema Rails   Campus Party 09

1Tuesday, January 20, 2009

Page 6: Ecossistema Rails   Campus Party 09

1993

“Matz”

Tuesday, January 20, 2009

http://www.ruby-lang.org

Page 7: Ecossistema Rails   Campus Party 09

2001

“Prag Dave”

Tuesday, January 20, 2009

http://www.rubycentral.com/book/http://www.pragprog.com/titles/ruby3/programming-ruby-1-9

Page 8: Ecossistema Rails   Campus Party 09

2004

“DHH”

Tuesday, January 20, 2009

http://www.rubyonrails.orghttp://www.loudthinking.com

Page 9: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://rubyonrails.org/screencasts

Page 10: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://rubyonrails.org/screencasts

Page 11: Ecossistema Rails   Campus Party 09

“Tornar as coisas simples fáceis e as coisas

complexas possíveis”

Filosofia Ruby

Tuesday, January 20, 2009

Page 12: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.levenez.com/lang/

Page 13: Ecossistema Rails   Campus Party 09

Ruby on Rails

Tuesday, January 20, 2009

Page 14: Ecossistema Rails   Campus Party 09

RUBY

Tuesday, January 20, 2009

http://guides.rails.info/

Page 15: Ecossistema Rails   Campus Party 09

ActiveSupportRails

RUBY

Tuesday, January 20, 2009

http://guides.rails.info/

Page 16: Ecossistema Rails   Campus Party 09

ActionPack

ActionController

ActionView

ActiveSupportRails

RUBY

Tuesday, January 20, 2009

http://guides.rails.info/

Page 17: Ecossistema Rails   Campus Party 09

ActiveRecord

ActionPack

ActionController

ActionView

ActiveSupportRails

RUBY

Tuesday, January 20, 2009

http://guides.rails.info/

Page 18: Ecossistema Rails   Campus Party 09

ActiveRecord

ActionPack

ActionMailer

ActionController

ActionView

ActiveSupportRails

RUBY

Tuesday, January 20, 2009

http://guides.rails.info/

Page 19: Ecossistema Rails   Campus Party 09

ActiveRecord

ActionPack

ActiveResource

ActionMailer

ActionController

ActionView

ActiveSupportRails

ActionWebService

RUBY

Tuesday, January 20, 2009

http://guides.rails.info/

Page 20: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 21: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 22: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 23: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 24: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 25: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 26: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 27: Ecossistema Rails   Campus Party 09

describe Product do include ProductSpecHelper

before(:each) do @product = Product.new end

it "should not be valid when empty" do @product.should_not be_valid end

it "should be valid when having correct information" do @product.attributes = valid_product_attributes @product.should be_valid endend

RSpec

Tuesday, January 20, 2009

Page 28: Ecossistema Rails   Campus Party 09

describe Product do include ProductSpecHelper

before(:each) do @product = Product.new end

it "should not be valid when empty" do @product.should_not be_valid end

it "should be valid when having correct information" do @product.attributes = valid_product_attributes @product.should be_valid endend

RSpec

rake spec

Tuesday, January 20, 2009

Page 29: Ecossistema Rails   Campus Party 09

class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category

validates_presence_of :name validates_presence_of :master_price validates_presence_of :description

make_permalink :with => :name, :field => :permalinkend

Model

Tuesday, January 20, 2009

Page 30: Ecossistema Rails   Campus Party 09

class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category

validates_presence_of :name validates_presence_of :master_price validates_presence_of :description

make_permalink :with => :name, :field => :permalinkend

Model

Product.find(1)

Tuesday, January 20, 2009

Page 31: Ecossistema Rails   Campus Party 09

class UsersController < Spree::BaseController resource_controller before_filter :initialize_extension_partials actions :all, :except => [:index, :destroy] show.before do @orders = Order.checkout_completed(true) .find_all_by_user_id(current_user.id) end

create.after { self.current_user = @user }

create.response do |wants| wants.html { redirect_back_or_default(products_path) } end end

Controller

Tuesday, January 20, 2009

Page 32: Ecossistema Rails   Campus Party 09

class UsersController < Spree::BaseController resource_controller before_filter :initialize_extension_partials actions :all, :except => [:index, :destroy] show.before do @orders = Order.checkout_completed(true) .find_all_by_user_id(current_user.id) end

create.after { self.current_user = @user }

create.response do |wants| wants.html { redirect_back_or_default(products_path) } end end

Controller

/users/1

Tuesday, January 20, 2009

Page 33: Ecossistema Rails   Campus Party 09

<div id="product-listing"> <%= breadcrumbs(@taxon) %> <br/> <%= render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon } %></div>

<% content_for :sidebar do %> <td id="shop-by-col" valign="top"> <%= render :partial => "shared/taxonomies" %> </td><% end %>

<%= render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty? %>

Views ERB

Tuesday, January 20, 2009

Page 34: Ecossistema Rails   Campus Party 09

#product-listing =breadcrumbs(@taxon) %br =render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon}

-content_for :sidebar do %td#shop-by-col(:valign => "top") =render :partial => "shared/taxonomies" =render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty?

Views HAML

Tuesday, January 20, 2009

Page 35: Ecossistema Rails   Campus Party 09

ActionController::Routing::Routes.draw do |map| map.connect ':controller/service.wsdl', :action => 'wsdl'

map.resources :products, :member => {:change_image => :post} map.resources :addresses map.resources :orders, :has_many => [:line_items]

map.namespace :admin do |admin| admin.resources :users admin.resources :products endend

Rotas RESTFul

Tuesday, January 20, 2009

Page 36: Ecossistema Rails   Campus Party 09

ActionController::Routing::Routes.draw do |map| map.connect ':controller/service.wsdl', :action => 'wsdl'

map.resources :products, :member => {:change_image => :post} map.resources :addresses map.resources :orders, :has_many => [:line_items]

map.namespace :admin do |admin| admin.resources :users admin.resources :products endend

Rotas RESTFul

GET /products/newGET /productsPOST /productsGET /products/1GET /products/1/editPUT /products/1DESTROY /products/1

Tuesday, January 20, 2009

Page 37: Ecossistema Rails   Campus Party 09

class RenameAppConfiguration < ActiveRecord::Migration def self.up rename_table :app_configurations, :configurations change_table :configurations do |t| t.string :type end end

def self.down change_table :configurations do |t| t.remove :type end rename_table :configurations, :app_configurations endend

Migrations

Tuesday, January 20, 2009

Page 38: Ecossistema Rails   Campus Party 09

class RenameAppConfiguration < ActiveRecord::Migration def self.up rename_table :app_configurations, :configurations change_table :configurations do |t| t.string :type end end

def self.down change_table :configurations do |t| t.remove :type end rename_table :configurations, :app_configurations endend

Migrations

rake db:migrate

Tuesday, January 20, 2009

Page 39: Ecossistema Rails   Campus Party 09

“Beautiful Code”

Tuesday, January 20, 2009

Page 40: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 41: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 42: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://weblog.jamisbuck.org/2008/11/9/legos-play-doh-and-programminghttp://weblog.jamisbuck.org/2008/11/29/recovering-from-enterprise-video-available

Page 43: Ecossistema Rails   Campus Party 09

11 mil classes!

46 só de Collections!

Tuesday, January 20, 2009

http://weblog.jamisbuck.org/2008/11/9/legos-play-doh-and-programminghttp://weblog.jamisbuck.org/2008/11/29/recovering-from-enterprise-video-available

Page 44: Ecossistema Rails   Campus Party 09

• Modules:

• Enumerable

• Comparable

• Classes:

• Array

• Hash

• Set

• Sorted Set

Tuesday, January 20, 2009

Page 45: Ecossistema Rails   Campus Party 09

• Modules:

• Enumerable

• Comparable

• Classes:

• Array

• Hash

• Set

• Sorted Set

1.400classes

só 6 de Collections!

Tuesday, January 20, 2009

Page 46: Ecossistema Rails   Campus Party 09

• Convention over Configuration

• Don’t Repeat Yourself

• You Ain’t Gonna Need It

• Automação

• Boas Práticas

• Código Bonito

• Ferramentas Simples

Tuesday, January 20, 2009

Page 47: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://macromates.comhttp://www.apple.com/macbook

Page 48: Ecossistema Rails   Campus Party 09

2Tuesday, January 20, 2009

Page 49: Ecossistema Rails   Campus Party 09

Mitos

Tuesday, January 20, 2009

http://www.loudthinking.com/posts/29-the-rails-myths

Page 50: Ecossistema Rails   Campus Party 09

Ruby tem marketshare

menor que Java ou PHP

Tuesday, January 20, 2009

Page 51: Ecossistema Rails   Campus Party 09

Qual foi o concurso?

Qual foi o prêmio?

Tuesday, January 20, 2009

http://gilesbowkett.blogspot.com/2009/01/why-hacker-news-thinks-php-won.html

Page 52: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.google.com/trends?q=ruby+rails%2C+python+django%2C+grails%2C+zend

Page 53: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.google.com/trends?q=microsoft+windows%2C+linux&ctab=0&geo=all&date=all&sort=0

Page 54: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.roughlydrafted.com/2008/10/25/apple-earnings-profits-and-cash-embarrass-microsoft-2/

Page 55: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 56: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 57: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 58: Ecossistema Rails   Campus Party 09

Martin Fowler

Tuesday, January 20, 2009

http://www.thoughtworks.com/how-we-do-it/ruby.html

Page 59: Ecossistema Rails   Campus Party 09

Agile

Tuesday, January 20, 2009

http://pragdave.pragprog.com/

Page 60: Ecossistema Rails   Campus Party 09

Mitos

Tuesday, January 20, 2009

Page 61: Ecossistema Rails   Campus Party 09

Rails não Escala

Tuesday, January 20, 2009

Page 62: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

FUD: http://www.techcrunch.com/2008/05/22/twitter-at-scale-will-it-work/

Page 63: Ecossistema Rails   Campus Party 09

To put things into perspective, though,

Friendster was written in Java to start, and switched to PHP. Myspace was written in ColdFusion and transitioned

to ASP.NET.

When people run into problems scaling sites they

often think that the language is the problem, but I think

it’s rarely the case. Blaine Cook

http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter

Tuesday, January 20, 2009

http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter

Page 64: Ecossistema Rails   Campus Party 09

“The New York Times used Ruby on Rails to pull together, analyze and display election results in near real time on one of its busiest Web

traffic days ever. ”

http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise?fp=16&fpid=1

Tuesday, January 20, 2009

http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9120778

Page 65: Ecossistema Rails   Campus Party 09

“They serve up 23 million visitors a month. The conversion resulted in 20,000 lines of Ruby code instead of 125,000 lines of Java code, and most importantly

eased the difficulty they had in maintaining it. Once complete, and optimized their site is now faster than before. They also completed the

rewrite in three months with four developers.”

http://www.railsonwave.com/railsonwave/2008/6/4/yellowpages-com-migrates-to-rails

Tuesday, January 20, 2009

http://www.akitaonrails.com/2008/11/21/rails-podcast-brasil-qcon-special-john-straw-yellowpages-com-and-matt-aimonetti-merbhttp://www.rubyonrailsexamples.com/sites-on-rails/yellowpagescom-goes-ror/

Page 66: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.techcrunch.com/2008/01/24/hulu-discusses-private-beta-suggests-public-launch-time-frame/

Page 67: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.blogblogs.com.br

Page 68: Ecossistema Rails   Campus Party 09

Mitos

Tuesday, January 20, 2009

Page 69: Ecossistema Rails   Campus Party 09

Deployment de Rails é difícil

Tuesday, January 20, 2009

Page 70: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 71: Ecossistema Rails   Campus Party 09

Apache + FastCGI

LightTPD + FastCGI

Litespeed + SAPI

Apache + Mongrel

Nginx + Mongrel

Nginx + Thin

Tuesday, January 20, 2009

Page 72: Ecossistema Rails   Campus Party 09

Apache + FastCGI

LightTPD + FastCGI

Litespeed + SAPI

Apache + Mongrel

Nginx + Mongrel

Nginx + Thin

Tuesday, January 20, 2009

Page 73: Ecossistema Rails   Campus Party 09

Apache + FastCGI

LightTPD + FastCGI

Litespeed + SAPI

Apache + Mongrel

Nginx + Mongrel

Nginx + Thin

Tuesday, January 20, 2009

Page 74: Ecossistema Rails   Campus Party 09

Apache + FastCGI

LightTPD + FastCGI

Litespeed + SAPI

Apache + Mongrel

Nginx + Mongrel

Nginx + Thin

Tuesday, January 20, 2009

Page 75: Ecossistema Rails   Campus Party 09

Apache + FastCGI

LightTPD + FastCGI

Litespeed + SAPI

Apache + Mongrel

Nginx + Mongrel

Nginx + Thin

Tuesday, January 20, 2009

Page 76: Ecossistema Rails   Campus Party 09

Apache + FastCGI

LightTPD + FastCGI

Litespeed + SAPI

Apache + Mongrel

Nginx + Mongrel

Nginx + Thin

Tuesday, January 20, 2009

Page 77: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://phusion.nlhttp://www.modrails.com/

Page 78: Ecossistema Rails   Campus Party 09

gem install passengerpassenger-install-apache2-module

Tuesday, January 20, 2009

http://phusion.nlhttp://www.modrails.com/

Page 79: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 80: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 81: Ecossistema Rails   Campus Party 09

Mitos

Tuesday, January 20, 2009

Page 82: Ecossistema Rails   Campus Party 09

Rails é mal documentado

Tuesday, January 20, 2009

Page 83: Ecossistema Rails   Campus Party 09

Geoffrey

Tuesday, January 20, 2009

http://www.peepcode.com

Page 84: Ecossistema Rails   Campus Party 09

Jason e Gregg

Tuesday, January 20, 2009

http://railsenvy.comhttp://envycasts.com

Page 85: Ecossistema Rails   Campus Party 09

Ryan Bates

Tuesday, January 20, 2009

http://railscasts.com

Page 86: Ecossistema Rails   Campus Party 09

Pratik Naik

Tuesday, January 20, 2009

http://guides.rails.info/

Page 87: Ecossistema Rails   Campus Party 09

Satish Talim

Tuesday, January 20, 2009

http://rubylearning.org

Page 88: Ecossistema Rails   Campus Party 09

Peter Cooper

Tuesday, January 20, 2009

http://rubyinside.comhttp://railsinside.comhttp://rubyflow.comhttp://jrubyinside.comhttp://yorails.com

Page 89: Ecossistema Rails   Campus Party 09

_why

Tuesday, January 20, 2009

http://whytheluckystiff.net/

Page 90: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Dstripbooks&field-keywords=ruby+rails&x=0&y=0

Page 91: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 92: Ecossistema Rails   Campus Party 09

3Tuesday, January 20, 2009

Page 93: Ecossistema Rails   Campus Party 09

Mitos

Tuesday, January 20, 2009

Page 94: Ecossistema Rails   Campus Party 09

Open Source

Tuesday, January 20, 2009

Page 95: Ecossistema Rails   Campus Party 09

Chris Wanstrath

Tuesday, January 20, 2009

http://github.com

Page 96: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://rubyforge.orghttp://gitorious.org

Page 97: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://jruby.codehaus.orghttp://www.macruby.orghttp://www.ironruby.nethttp://ruby.gemstone.com/http://rubini.us/

Page 98: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://gettingreal.37signals.com/GR_por.phphttp://aprendaaprogramar.rubyonrails.pro.br/http://why.nomedojogo.com/http://rubyonrails.pro.brhttp://rubyonbr.org

Page 99: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://gettingreal.37signals.com/GR_por.phphttp://aprendaaprogramar.rubyonrails.pro.br/http://why.nomedojogo.com/http://rubyonrails.pro.brhttp://rubyonbr.org

Page 100: Ecossistema Rails   Campus Party 09

Conferências

Tuesday, January 20, 2009

Page 101: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.confreaks.com/http://www.akitaonrails.com/railsconf2008

Page 102: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

http://www.locaweb.com.br/railssummithttp://www.akitaonrails.com/railssummit2008

Page 103: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 104: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 105: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 106: Ecossistema Rails   Campus Party 09

Tuesday, January 20, 2009

Page 107: Ecossistema Rails   Campus Party 09

Especialista de uma coisa só é um amador em todo o resto.

Tuesday, January 20, 2009

Page 108: Ecossistema Rails   Campus Party 09

Obrigado!Tuesday, January 20, 2009