SlideShare a Scribd company logo
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

Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀DianaGray10
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsExpeed Software
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationZilliz
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...Product School
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...CzechDreamin
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...Product School
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityScyllaDB
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2DianaGray10
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Product School
 

Recently uploaded (20)

Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 

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