SlideShare a Scribd company logo
1 of 108
Download to read offline
Ecossistema Rails
                            Desenvolvedores 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
1
Tuesday, January 20, 2009
“Matz”




                            1993
Tuesday, January 20, 2009
http://www.ruby-lang.org
“Prag Dave”




                                                             2001
Tuesday, January 20, 2009
http://www.rubycentral.com/book/
http://www.pragprog.com/titles/ruby3/programming-ruby-1-9
“DHH”


                               2004
Tuesday, January 20, 2009
http://www.rubyonrails.org
http://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/
ActiveSupport
                            Rails


                                    RUBY

Tuesday, January 20, 2009
http://guides.rails.info/
ActionController
                            ActionPack
                                                  ActionView


                                                ActiveSupport
                              Rails


                                         RUBY

Tuesday, January 20, 2009
http://guides.rails.info/
ActiveRecord
                                                ActionController
                            ActionPack
                                                  ActionView


                                                ActiveSupport
                              Rails


                                         RUBY

Tuesday, January 20, 2009
http://guides.rails.info/
ActionMailer
                     ActiveRecord
                                                ActionController
                            ActionPack
                                                  ActionView


                                                ActiveSupport
                              Rails


                                         RUBY

Tuesday, January 20, 2009
http://guides.rails.info/
ActiveResource            ActionWebService

                                                  ActionMailer
                     ActiveRecord
                                                ActionController
                            ActionPack
                                                  ActionView


                                                ActiveSupport
                              Rails


                                         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
RSpec
     describe Product do
       include ProductSpecHelper

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

         it quot;should not be valid when emptyquot; do
           @product.should_not be_valid
         end

       it quot;should be valid when having correct informationquot; do
         @product.attributes = valid_product_attributes
         @product.should be_valid
       end
     end



Tuesday, January 20, 2009
RSpec
     describe Product do
       include ProductSpecHelper

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

         it quot;should not be valid when emptyquot; do
                             rake spec
           @product.should_not be_valid
         end

       it quot;should be valid when having correct informationquot; do
         @product.attributes = valid_product_attributes
         @product.should be_valid
       end
     end



Tuesday, January 20, 2009
Model

  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 => :permalink
  end




Tuesday, January 20, 2009
Model

  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
                        Product.find(1)
       belongs_to :tax_category

       validates_presence_of :name
       validates_presence_of :master_price
       validates_presence_of :description

    make_permalink :with => :name, :field => :permalink
  end




Tuesday, January 20, 2009
Controller

    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


Tuesday, January 20, 2009
Controller

    class UsersController < Spree::BaseController
      resource_controller
      before_filter :initialize_extension_partials
      actions :all, :except => [:index, :destroy]

        show.before do
          @orders = Order.checkout_completed(true)
                              /users/1
            .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


Tuesday, January 20, 2009
Views ERB
  <div id=quot;product-listingquot;>
    <%= breadcrumbs(@taxon) %>
    <br/>
    <%= render :partial => quot;shared/products.html.erbquot;,
    :locals => {:products => @products, :taxon => @taxon } %>
  </div>

  <% content_for :sidebar do %>
    <td id=quot;shop-by-colquot; valign=quot;topquot;>
      <%= render :partial => quot;shared/taxonomiesquot; %>
    </td>
  <% end %>

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



Tuesday, January 20, 2009
Views HAML

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

      -content_for :sidebar do
        %td#shop-by-col(:valign => quot;topquot;)
          =render :partial => quot;shared/taxonomiesquot;

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




Tuesday, January 20, 2009
Rotas RESTFul


  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
    end
  end



Tuesday, January 20, 2009
Rotas RESTFul


  ActionController::Routing::Routes.draw do |map|
                 GET /products/new
    map.connect ':controller/service.wsdl', :action => 'wsdl'
                    GET /products
       map.resources :products,
         :member => POST /products
                    {:change_image => :post}
       map.resources :addresses
                    GET /products/1
       map.resources :orders,
                    GET /products/1/edit
         :has_many => [:line_items]

       map.namespacePUT /products/1
                     :admin do |admin|
                    DESTROY /products/1
         admin.resources :users
         admin.resources :products
    end
  end



Tuesday, January 20, 2009
Migrations


        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
          end
        end


Tuesday, January 20, 2009
Migrations


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

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


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-programming
http://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-programming
http://weblog.jamisbuck.org/2008/11/29/recovering-from-enterprise-video-available
• Classes:
                     • Modules:       • Array
                      • Enumerable    • Hash
                      • Comparable    • Set
                                      • Sorted Set

Tuesday, January 20, 2009
1.400 Classes:
                                  •
                             classesArray
                     • Modules:     •
                      • Enumerable    • Hash
                      • Comparable 6 de Set
                                só    •
                                      • Sorted
                           Collections! Set


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.com
http://www.apple.com/macbook
2
Tuesday, 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
                                                                                 Blaine Cook
           it’s rarely the case.

                            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-merb
http://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.nl
http://www.modrails.com/
gem install passenger
         passenger-install-apache2-module




Tuesday, January 20, 2009
http://phusion.nl
http://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.com
http://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.com
http://railsinside.com
http://rubyflow.com
http://jrubyinside.com
http://yorails.com
_why
Tuesday, January 20, 2009
http://whytheluckysti.net/
Tuesday, January 20, 2009
http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Dstripbooksfield-keywords=ruby
+railsx=0y=0
Tuesday, January 20, 2009
3
Tuesday, 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.org
http://gitorious.org
Tuesday, January 20, 2009
http://jruby.codehaus.org
http://www.macruby.org
http://www.ironruby.net
http://ruby.gemstone.com/
http://rubini.us/
Tuesday, January 20, 2009
http://gettingreal.37signals.com/GR_por.php
http://aprendaaprogramar.rubyonrails.pro.br/
http://why.nomedojogo.com/
http://rubyonrails.pro.br
http://rubyonbr.org
Tuesday, January 20, 2009
http://gettingreal.37signals.com/GR_por.php
http://aprendaaprogramar.rubyonrails.pro.br/
http://why.nomedojogo.com/
http://rubyonrails.pro.br
http://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/railssummit
http://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

More Related Content

Similar to Ecossistema Rails Campus Party 09

Rails For Kids 2009
Rails For Kids 2009Rails For Kids 2009
Rails For Kids 2009Fabio Akita
 
2013 - Nate Abele: HTTP ALL THE THINGS: Simplificando aplicaciones respetando...
2013 - Nate Abele: HTTP ALL THE THINGS: Simplificando aplicaciones respetando...2013 - Nate Abele: HTTP ALL THE THINGS: Simplificando aplicaciones respetando...
2013 - Nate Abele: HTTP ALL THE THINGS: Simplificando aplicaciones respetando...PHP Conference Argentina
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript FrameworkAll Things Open
 
Introduction to Redux (for Angular and React devs)
Introduction to Redux (for Angular and React devs)Introduction to Redux (for Angular and React devs)
Introduction to Redux (for Angular and React devs)Fabio Biondi
 
feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 Enrico Teotti
 
Feature flagging with rails engines
Feature flagging with rails enginesFeature flagging with rails engines
Feature flagging with rails enginesEnrico Teotti
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFabio Akita
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in EmberMatthew Beale
 
Arquitetura de Front-end em Aplicações de Larga Escala
Arquitetura de Front-end em Aplicações de Larga EscalaArquitetura de Front-end em Aplicações de Larga Escala
Arquitetura de Front-end em Aplicações de Larga EscalaEduardo Shiota Yasuda
 
BarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian SalazarBarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian Salazarbarcampcr
 
Ruby on-rails-workshop
Ruby on-rails-workshopRuby on-rails-workshop
Ruby on-rails-workshopRyan Abbott
 
Building a dashboard using AngularJS
Building a dashboard using AngularJSBuilding a dashboard using AngularJS
Building a dashboard using AngularJSRajthilakMCA
 
Ember.js for SFHTML5
Ember.js for SFHTML5Ember.js for SFHTML5
Ember.js for SFHTML5Anthony Bull
 
Useful Rails Plugins
Useful Rails PluginsUseful Rails Plugins
Useful Rails Pluginsnavjeet
 
Api development with rails
Api development with railsApi development with rails
Api development with railsEdwin Cruz
 

Similar to Ecossistema Rails Campus Party 09 (20)

Rails For Kids 2009
Rails For Kids 2009Rails For Kids 2009
Rails For Kids 2009
 
Rails::Engine
Rails::EngineRails::Engine
Rails::Engine
 
Enecomp 2009
Enecomp 2009Enecomp 2009
Enecomp 2009
 
Dev In Rio 2009
Dev In Rio 2009Dev In Rio 2009
Dev In Rio 2009
 
2013 - Nate Abele: HTTP ALL THE THINGS: Simplificando aplicaciones respetando...
2013 - Nate Abele: HTTP ALL THE THINGS: Simplificando aplicaciones respetando...2013 - Nate Abele: HTTP ALL THE THINGS: Simplificando aplicaciones respetando...
2013 - Nate Abele: HTTP ALL THE THINGS: Simplificando aplicaciones respetando...
 
Catalog display
Catalog displayCatalog display
Catalog display
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
 
Introduction to Redux (for Angular and React devs)
Introduction to Redux (for Angular and React devs)Introduction to Redux (for Angular and React devs)
Introduction to Redux (for Angular and React devs)
 
feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 feature flagging with rails engines v0.2
feature flagging with rails engines v0.2
 
Feature flagging with rails engines
Feature flagging with rails enginesFeature flagging with rails engines
Feature flagging with rails engines
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in Ember
 
Arquitetura de Front-end em Aplicações de Larga Escala
Arquitetura de Front-end em Aplicações de Larga EscalaArquitetura de Front-end em Aplicações de Larga Escala
Arquitetura de Front-end em Aplicações de Larga Escala
 
BarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian SalazarBarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian Salazar
 
Combres
CombresCombres
Combres
 
Ruby on-rails-workshop
Ruby on-rails-workshopRuby on-rails-workshop
Ruby on-rails-workshop
 
Building a dashboard using AngularJS
Building a dashboard using AngularJSBuilding a dashboard using AngularJS
Building a dashboard using AngularJS
 
Ember.js for SFHTML5
Ember.js for SFHTML5Ember.js for SFHTML5
Ember.js for SFHTML5
 
Useful Rails Plugins
Useful Rails PluginsUseful Rails Plugins
Useful Rails Plugins
 
Api development with rails
Api development with railsApi development with rails
Api development with rails
 

More from Fabio Akita

Devconf 2019 - São Carlos
Devconf 2019 - São CarlosDevconf 2019 - São Carlos
Devconf 2019 - São CarlosFabio Akita
 
Meetup Nerdzão - English Talk about Languages
Meetup Nerdzão  - English Talk about LanguagesMeetup Nerdzão  - English Talk about Languages
Meetup Nerdzão - English Talk about LanguagesFabio Akita
 
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018Fabio Akita
 
Desmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SPDesmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SPFabio Akita
 
Desmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter GoianiaDesmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter GoianiaFabio Akita
 
Blockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7MastersBlockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7MastersFabio Akita
 
Elixir -Tolerância a Falhas para Adultos - GDG Campinas
Elixir  -Tolerância a Falhas para Adultos - GDG CampinasElixir  -Tolerância a Falhas para Adultos - GDG Campinas
Elixir -Tolerância a Falhas para Adultos - GDG CampinasFabio Akita
 
Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017Fabio Akita
 
30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to Ruby30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to RubyFabio Akita
 
Uma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TIUma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TIFabio Akita
 
THE CONF - Opening Keynote
THE CONF - Opening KeynoteTHE CONF - Opening Keynote
THE CONF - Opening KeynoteFabio Akita
 
A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017Fabio Akita
 
Desmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - APDesmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - APFabio Akita
 
A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017Fabio Akita
 
A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017Fabio Akita
 
A Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech DayA Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech DayFabio Akita
 
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016Fabio Akita
 
Conexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização PrematuraConexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização PrematuraFabio Akita
 
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilThe Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilFabio Akita
 
Premature optimisation: The Root of All Evil
Premature optimisation: The Root of All EvilPremature optimisation: The Root of All Evil
Premature optimisation: The Root of All EvilFabio Akita
 

More from Fabio Akita (20)

Devconf 2019 - São Carlos
Devconf 2019 - São CarlosDevconf 2019 - São Carlos
Devconf 2019 - São Carlos
 
Meetup Nerdzão - English Talk about Languages
Meetup Nerdzão  - English Talk about LanguagesMeetup Nerdzão  - English Talk about Languages
Meetup Nerdzão - English Talk about Languages
 
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
 
Desmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SPDesmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SP
 
Desmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter GoianiaDesmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter Goiania
 
Blockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7MastersBlockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7Masters
 
Elixir -Tolerância a Falhas para Adultos - GDG Campinas
Elixir  -Tolerância a Falhas para Adultos - GDG CampinasElixir  -Tolerância a Falhas para Adultos - GDG Campinas
Elixir -Tolerância a Falhas para Adultos - GDG Campinas
 
Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017
 
30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to Ruby30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to Ruby
 
Uma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TIUma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TI
 
THE CONF - Opening Keynote
THE CONF - Opening KeynoteTHE CONF - Opening Keynote
THE CONF - Opening Keynote
 
A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017
 
Desmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - APDesmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - AP
 
A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017
 
A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017
 
A Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech DayA Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech Day
 
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
 
Conexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização PrematuraConexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização Prematura
 
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilThe Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
 
Premature optimisation: The Root of All Evil
Premature optimisation: The Root of All EvilPremature optimisation: The Root of All Evil
Premature optimisation: The Root of All Evil
 

Recently uploaded

WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Skynet Technologies
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data SciencePaolo Missier
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingScyllaDB
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfFIDO Alliance
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewDianaGray10
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxjbellis
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTopCSSGallery
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuidePixlogix Infotech
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandIES VE
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxFIDO Alliance
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Paige Cruz
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptxFIDO Alliance
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxFIDO Alliance
 

Recently uploaded (20)

WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development Companies
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 

Ecossistema Rails Campus Party 09

  • 1. Ecossistema Rails Desenvolvedores Web 2.0 Tuesday, January 20, 2009
  • 3. Tuesday, January 20, 2009 http://www.akitaonrails.com
  • 4. Tuesday, January 20, 2009 http://www.locaweb.com.br/rails
  • 6. “Matz” 1993 Tuesday, January 20, 2009 http://www.ruby-lang.org
  • 7. “Prag Dave” 2001 Tuesday, January 20, 2009 http://www.rubycentral.com/book/ http://www.pragprog.com/titles/ruby3/programming-ruby-1-9
  • 8. “DHH” 2004 Tuesday, January 20, 2009 http://www.rubyonrails.org http://www.loudthinking.com
  • 9. Tuesday, January 20, 2009 http://rubyonrails.org/screencasts
  • 10. Tuesday, January 20, 2009 http://rubyonrails.org/screencasts
  • 11. “Tornar as coisas simples fáceis e as coisas complexas possíveis” Filosofia Ruby Tuesday, January 20, 2009
  • 12. Tuesday, January 20, 2009 http://www.levenez.com/lang/
  • 13. Ruby on Rails Tuesday, January 20, 2009
  • 14. RUBY Tuesday, January 20, 2009 http://guides.rails.info/
  • 15. ActiveSupport Rails RUBY Tuesday, January 20, 2009 http://guides.rails.info/
  • 16. ActionController ActionPack ActionView ActiveSupport Rails RUBY Tuesday, January 20, 2009 http://guides.rails.info/
  • 17. ActiveRecord ActionController ActionPack ActionView ActiveSupport Rails RUBY Tuesday, January 20, 2009 http://guides.rails.info/
  • 18. ActionMailer ActiveRecord ActionController ActionPack ActionView ActiveSupport Rails RUBY Tuesday, January 20, 2009 http://guides.rails.info/
  • 19. ActiveResource ActionWebService ActionMailer ActiveRecord ActionController ActionPack ActionView ActiveSupport Rails RUBY Tuesday, January 20, 2009 http://guides.rails.info/
  • 27. RSpec describe Product do include ProductSpecHelper before(:each) do @product = Product.new end it quot;should not be valid when emptyquot; do @product.should_not be_valid end it quot;should be valid when having correct informationquot; do @product.attributes = valid_product_attributes @product.should be_valid end end Tuesday, January 20, 2009
  • 28. RSpec describe Product do include ProductSpecHelper before(:each) do @product = Product.new end it quot;should not be valid when emptyquot; do rake spec @product.should_not be_valid end it quot;should be valid when having correct informationquot; do @product.attributes = valid_product_attributes @product.should be_valid end end Tuesday, January 20, 2009
  • 29. Model 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 => :permalink end Tuesday, January 20, 2009
  • 30. Model 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 Product.find(1) belongs_to :tax_category validates_presence_of :name validates_presence_of :master_price validates_presence_of :description make_permalink :with => :name, :field => :permalink end Tuesday, January 20, 2009
  • 31. Controller 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 Tuesday, January 20, 2009
  • 32. Controller class UsersController < Spree::BaseController resource_controller before_filter :initialize_extension_partials actions :all, :except => [:index, :destroy] show.before do @orders = Order.checkout_completed(true) /users/1 .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 Tuesday, January 20, 2009
  • 33. Views ERB <div id=quot;product-listingquot;> <%= breadcrumbs(@taxon) %> <br/> <%= render :partial => quot;shared/products.html.erbquot;, :locals => {:products => @products, :taxon => @taxon } %> </div> <% content_for :sidebar do %> <td id=quot;shop-by-colquot; valign=quot;topquot;> <%= render :partial => quot;shared/taxonomiesquot; %> </td> <% end %> <%= render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty? %> Tuesday, January 20, 2009
  • 34. Views HAML #product-listing =breadcrumbs(@taxon) %br =render :partial => quot;shared/products.html.erbquot;, :locals => {:products => @products, :taxon => @taxon} -content_for :sidebar do %td#shop-by-col(:valign => quot;topquot;) =render :partial => quot;shared/taxonomiesquot; =render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty? Tuesday, January 20, 2009
  • 35. Rotas RESTFul 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 end end Tuesday, January 20, 2009
  • 36. Rotas RESTFul ActionController::Routing::Routes.draw do |map| GET /products/new map.connect ':controller/service.wsdl', :action => 'wsdl' GET /products map.resources :products, :member => POST /products {:change_image => :post} map.resources :addresses GET /products/1 map.resources :orders, GET /products/1/edit :has_many => [:line_items] map.namespacePUT /products/1 :admin do |admin| DESTROY /products/1 admin.resources :users admin.resources :products end end Tuesday, January 20, 2009
  • 37. Migrations 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 end end Tuesday, January 20, 2009
  • 38. Migrations class RenameAppConfiguration < ActiveRecord::Migration def self.up rename_table :app_configurations, :configurations change_table :configurations do |t| t.string :type end rake db:migrate end def self.down change_table :configurations do |t| t.remove :type end rename_table :configurations, :app_configurations end end Tuesday, January 20, 2009
  • 42. Tuesday, January 20, 2009 http://weblog.jamisbuck.org/2008/11/9/legos-play-doh-and-programming http://weblog.jamisbuck.org/2008/11/29/recovering-from-enterprise-video-available
  • 43. 11 mil classes! 46 só de Collections! Tuesday, January 20, 2009 http://weblog.jamisbuck.org/2008/11/9/legos-play-doh-and-programming http://weblog.jamisbuck.org/2008/11/29/recovering-from-enterprise-video-available
  • 44. • Classes: • Modules: • Array • Enumerable • Hash • Comparable • Set • Sorted Set Tuesday, January 20, 2009
  • 45. 1.400 Classes: • classesArray • Modules: • • Enumerable • Hash • Comparable 6 de Set só • • Sorted Collections! Set Tuesday, January 20, 2009
  • 46. • 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
  • 47. Tuesday, January 20, 2009 http://macromates.com http://www.apple.com/macbook
  • 49. Mitos Tuesday, January 20, 2009 http://www.loudthinking.com/posts/29-the-rails-myths
  • 50. Ruby tem marketshare menor que Java ou PHP Tuesday, January 20, 2009
  • 51. 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
  • 52. Tuesday, January 20, 2009 http://www.google.com/trends?q=ruby+rails%2C+python+django%2C+grails%2C+zend
  • 53. Tuesday, January 20, 2009 http://www.google.com/trends?q=microsoft+windows%2C +linux&ctab=0&geo=all&date=all&sort=0
  • 54. Tuesday, January 20, 2009 http://www.roughlydrafted.com/2008/10/25/apple-earnings-profits-and-cash-embarrass- microsoft-2/
  • 58. Martin Fowler Tuesday, January 20, 2009 http://www.thoughtworks.com/how-we-do-it/ruby.html
  • 59. Agile Tuesday, January 20, 2009 http://pragdave.pragprog.com/
  • 61. Rails não Escala Tuesday, January 20, 2009
  • 62. Tuesday, January 20, 2009 FUD: http://www.techcrunch.com/2008/05/22/twitter-at-scale-will-it-work/
  • 63. 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 Blaine Cook it’s rarely the case. 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
  • 64. “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
  • 65. “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-merb http://www.rubyonrailsexamples.com/sites-on-rails/yellowpagescom- goes-ror/
  • 66. Tuesday, January 20, 2009 http://www.techcrunch.com/2008/01/24/hulu-discusses-private-beta- suggests-public-launch-time-frame/
  • 67. Tuesday, January 20, 2009 http://www.blogblogs.com.br
  • 69. Deployment de Rails é difícil Tuesday, January 20, 2009
  • 71. Apache + FastCGI LightTPD + FastCGI Litespeed + SAPI Apache + Mongrel Nginx + Mongrel Nginx + Thin Tuesday, January 20, 2009
  • 72. Apache + FastCGI LightTPD + FastCGI Litespeed + SAPI Apache + Mongrel Nginx + Mongrel Nginx + Thin Tuesday, January 20, 2009
  • 73. Apache + FastCGI LightTPD + FastCGI Litespeed + SAPI Apache + Mongrel Nginx + Mongrel Nginx + Thin Tuesday, January 20, 2009
  • 74. Apache + FastCGI LightTPD + FastCGI Litespeed + SAPI Apache + Mongrel Nginx + Mongrel Nginx + Thin Tuesday, January 20, 2009
  • 75. Apache + FastCGI LightTPD + FastCGI Litespeed + SAPI Apache + Mongrel Nginx + Mongrel Nginx + Thin Tuesday, January 20, 2009
  • 76. Apache + FastCGI LightTPD + FastCGI Litespeed + SAPI Apache + Mongrel Nginx + Mongrel Nginx + Thin Tuesday, January 20, 2009
  • 77. Tuesday, January 20, 2009 http://phusion.nl http://www.modrails.com/
  • 78. gem install passenger passenger-install-apache2-module Tuesday, January 20, 2009 http://phusion.nl http://www.modrails.com/
  • 82. Rails é mal documentado Tuesday, January 20, 2009
  • 83. Geoffrey Tuesday, January 20, 2009 http://www.peepcode.com
  • 84. Jason e Gregg Tuesday, January 20, 2009 http://railsenvy.com http://envycasts.com
  • 85. Ryan Bates Tuesday, January 20, 2009 http://railscasts.com
  • 86. Pratik Naik Tuesday, January 20, 2009 http://guides.rails.info/
  • 87. Satish Talim Tuesday, January 20, 2009 http://rubylearning.org
  • 88. Peter Cooper Tuesday, January 20, 2009 http://rubyinside.com http://railsinside.com http://rubyflow.com http://jrubyinside.com http://yorails.com
  • 89. _why Tuesday, January 20, 2009 http://whytheluckysti.net/
  • 90. Tuesday, January 20, 2009 http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Dstripbooksfield-keywords=ruby +railsx=0y=0
  • 95. Chris Wanstrath Tuesday, January 20, 2009 http://github.com
  • 96. Tuesday, January 20, 2009 http://rubyforge.org http://gitorious.org
  • 97. Tuesday, January 20, 2009 http://jruby.codehaus.org http://www.macruby.org http://www.ironruby.net http://ruby.gemstone.com/ http://rubini.us/
  • 98. Tuesday, January 20, 2009 http://gettingreal.37signals.com/GR_por.php http://aprendaaprogramar.rubyonrails.pro.br/ http://why.nomedojogo.com/ http://rubyonrails.pro.br http://rubyonbr.org
  • 99. Tuesday, January 20, 2009 http://gettingreal.37signals.com/GR_por.php http://aprendaaprogramar.rubyonrails.pro.br/ http://why.nomedojogo.com/ http://rubyonrails.pro.br http://rubyonbr.org
  • 101. Tuesday, January 20, 2009 http://www.confreaks.com/ http://www.akitaonrails.com/railsconf2008
  • 102. Tuesday, January 20, 2009 http://www.locaweb.com.br/railssummit http://www.akitaonrails.com/railssummit2008
  • 107. Especialista de uma coisa só é um amador em todo o resto. Tuesday, January 20, 2009