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

BarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian SalazarBarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian Salazar
barcampcr
 
Ruby on-rails-workshop
Ruby on-rails-workshopRuby on-rails-workshop
Ruby on-rails-workshop
Ryan Abbott
 

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

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

Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Recently uploaded (20)

AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4j
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
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
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
 
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
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
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
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
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...
 

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