ecossistema rails campus party 09
TRANSCRIPT
Ecossistema RailsDesenvolvedores Web 2.0
Tuesday, January 20, 2009
AkitaOnRails
Tuesday, January 20, 2009
Tuesday, January 20, 2009
http://www.akitaonrails.com
Tuesday, January 20, 2009
http://www.locaweb.com.br/rails
1Tuesday, January 20, 2009
1993
“Matz”
Tuesday, January 20, 2009
http://www.ruby-lang.org
2001
“Prag Dave”
Tuesday, January 20, 2009
http://www.rubycentral.com/book/http://www.pragprog.com/titles/ruby3/programming-ruby-1-9
2004
“DHH”
Tuesday, January 20, 2009
http://www.rubyonrails.orghttp://www.loudthinking.com
Tuesday, January 20, 2009
http://rubyonrails.org/screencasts
Tuesday, January 20, 2009
http://rubyonrails.org/screencasts
“Tornar as coisas simples fáceis e as coisas
complexas possíveis”
Filosofia Ruby
Tuesday, January 20, 2009
Tuesday, January 20, 2009
http://www.levenez.com/lang/
Ruby on Rails
Tuesday, January 20, 2009
RUBY
Tuesday, January 20, 2009
http://guides.rails.info/
ActiveSupportRails
RUBY
Tuesday, January 20, 2009
http://guides.rails.info/
ActionPack
ActionController
ActionView
ActiveSupportRails
RUBY
Tuesday, January 20, 2009
http://guides.rails.info/
ActiveRecord
ActionPack
ActionController
ActionView
ActiveSupportRails
RUBY
Tuesday, January 20, 2009
http://guides.rails.info/
ActiveRecord
ActionPack
ActionMailer
ActionController
ActionView
ActiveSupportRails
RUBY
Tuesday, January 20, 2009
http://guides.rails.info/
ActiveRecord
ActionPack
ActiveResource
ActionMailer
ActionController
ActionView
ActiveSupportRails
ActionWebService
RUBY
Tuesday, January 20, 2009
http://guides.rails.info/
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Tuesday, January 20, 2009
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
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
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
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
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
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
<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
#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
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
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
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
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
“Beautiful Code”
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Tuesday, January 20, 2009
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
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
• Modules:
• Enumerable
• Comparable
• Classes:
• Array
• Hash
• Set
• Sorted Set
Tuesday, January 20, 2009
• Modules:
• Enumerable
• Comparable
• Classes:
• Array
• Hash
• Set
• Sorted Set
1.400classes
só 6 de Collections!
Tuesday, January 20, 2009
• 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
Tuesday, January 20, 2009
http://macromates.comhttp://www.apple.com/macbook
2Tuesday, January 20, 2009
Mitos
Tuesday, January 20, 2009
http://www.loudthinking.com/posts/29-the-rails-myths
Ruby tem marketshare
menor que Java ou PHP
Tuesday, January 20, 2009
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
Tuesday, January 20, 2009
http://www.google.com/trends?q=ruby+rails%2C+python+django%2C+grails%2C+zend
Tuesday, January 20, 2009
http://www.google.com/trends?q=microsoft+windows%2C+linux&ctab=0&geo=all&date=all&sort=0
Tuesday, January 20, 2009
http://www.roughlydrafted.com/2008/10/25/apple-earnings-profits-and-cash-embarrass-microsoft-2/
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Martin Fowler
Tuesday, January 20, 2009
http://www.thoughtworks.com/how-we-do-it/ruby.html
Agile
Tuesday, January 20, 2009
http://pragdave.pragprog.com/
Mitos
Tuesday, January 20, 2009
Rails não Escala
Tuesday, January 20, 2009
Tuesday, January 20, 2009
FUD: http://www.techcrunch.com/2008/05/22/twitter-at-scale-will-it-work/
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
“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
“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/
Tuesday, January 20, 2009
http://www.techcrunch.com/2008/01/24/hulu-discusses-private-beta-suggests-public-launch-time-frame/
Tuesday, January 20, 2009
http://www.blogblogs.com.br
Mitos
Tuesday, January 20, 2009
Deployment de Rails é difícil
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Apache + FastCGI
LightTPD + FastCGI
Litespeed + SAPI
Apache + Mongrel
Nginx + Mongrel
Nginx + Thin
Tuesday, January 20, 2009
Apache + FastCGI
LightTPD + FastCGI
Litespeed + SAPI
Apache + Mongrel
Nginx + Mongrel
Nginx + Thin
Tuesday, January 20, 2009
Apache + FastCGI
LightTPD + FastCGI
Litespeed + SAPI
Apache + Mongrel
Nginx + Mongrel
Nginx + Thin
Tuesday, January 20, 2009
Apache + FastCGI
LightTPD + FastCGI
Litespeed + SAPI
Apache + Mongrel
Nginx + Mongrel
Nginx + Thin
Tuesday, January 20, 2009
Apache + FastCGI
LightTPD + FastCGI
Litespeed + SAPI
Apache + Mongrel
Nginx + Mongrel
Nginx + Thin
Tuesday, January 20, 2009
Apache + FastCGI
LightTPD + FastCGI
Litespeed + SAPI
Apache + Mongrel
Nginx + Mongrel
Nginx + Thin
Tuesday, January 20, 2009
Tuesday, January 20, 2009
http://phusion.nlhttp://www.modrails.com/
gem install passengerpassenger-install-apache2-module
Tuesday, January 20, 2009
http://phusion.nlhttp://www.modrails.com/
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Mitos
Tuesday, January 20, 2009
Rails é mal documentado
Tuesday, January 20, 2009
Geoffrey
Tuesday, January 20, 2009
http://www.peepcode.com
Jason e Gregg
Tuesday, January 20, 2009
http://railsenvy.comhttp://envycasts.com
Ryan Bates
Tuesday, January 20, 2009
http://railscasts.com
Pratik Naik
Tuesday, January 20, 2009
http://guides.rails.info/
Satish Talim
Tuesday, January 20, 2009
http://rubylearning.org
Peter Cooper
Tuesday, January 20, 2009
http://rubyinside.comhttp://railsinside.comhttp://rubyflow.comhttp://jrubyinside.comhttp://yorails.com
_why
Tuesday, January 20, 2009
http://whytheluckystiff.net/
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
Tuesday, January 20, 2009
3Tuesday, January 20, 2009
Mitos
Tuesday, January 20, 2009
Open Source
Tuesday, January 20, 2009
Chris Wanstrath
Tuesday, January 20, 2009
http://github.com
Tuesday, January 20, 2009
http://rubyforge.orghttp://gitorious.org
Tuesday, January 20, 2009
http://jruby.codehaus.orghttp://www.macruby.orghttp://www.ironruby.nethttp://ruby.gemstone.com/http://rubini.us/
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
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
Conferências
Tuesday, January 20, 2009
Tuesday, January 20, 2009
http://www.confreaks.com/http://www.akitaonrails.com/railsconf2008
Tuesday, January 20, 2009
http://www.locaweb.com.br/railssummithttp://www.akitaonrails.com/railssummit2008
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Tuesday, January 20, 2009
Especialista de uma coisa só é um amador em todo o resto.
Tuesday, January 20, 2009
Obrigado!Tuesday, January 20, 2009