Upload
fabio-akita
View
610
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Palestra sobre Agilidade e Ruby on Rails no Encontro de TI do Rio de Janeiro, pela Arteccom.
Citation preview
Ruby on RailsEcossistema e Agilidade
Wednesday, April 8, 2009
Ruby on RailsEcossistema e Agilidade
Wednesday, April 8, 2009
Wednesday, April 8, 2009
www.slideshare.net/akitaonrails
www.akitaonrails.com
Wednesday, April 8, 2009
1Wednesday, April 8, 2009
Wednesday, April 8, 2009
Aplicações vs. Frameworks
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
“Produtividade”
“Quick’n Dirty”
Mantenabilidade
DÉBITO TÉCNICO
Wednesday, April 8, 2009
“Produtividade”
“Quick’n Dirty”
Mantenabilidade
DÉBITO TÉCNICO
Wednesday, April 8, 2009
“Produtividade”
“Quick’n Dirty”
Mantenabilidade
DÉBITO TÉCNICO
Wednesday, April 8, 2009
“Produtividade”
“Quick’n Dirty”
Mantenabilidade
DÉBITO TÉCNICO
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Codificadoresx
Desenvolvedores
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Martin Fowler
Wednesday, April 8, 2009
Agile
Wednesday, April 8, 2009
AGILIDADE
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Estamos “descobrindo” maneiras melhores de desenvolver software na prática e ajudando outros
a desenvolver.
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Big Design Up Front
“Waterfall” (Cascata)
Escopo Fechado
“Change Requests”
Wednesday, April 8, 2009
Big Design Up Front
“Waterfall” (Cascata)
Escopo Fechado
“Change Requests”
Wednesday, April 8, 2009
Big Design Up Front
“Waterfall” (Cascata)
Escopo Fechado
“Change Requests”
Wednesday, April 8, 2009
Big Design Up Front
“Waterfall” (Cascata)
Escopo Fechado
“Change Requests”
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Ceticismo
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Winston W. Royce - 1970
Wednesday, April 8, 2009
“Eu acredito neste conceito mas a implementação descrita acima é arriscada
e convida falhas.”
Winston W. Royce - 1970
Wednesday, April 8, 2009
“Eu acredito neste conceito mas a implementação descrita acima é arriscada
e convida falhas.”
Winston W. Royce - 1970
Wednesday, April 8, 2009
“Eu acredito neste conceito mas a implementação descrita acima é arriscada
e convida falhas.”
Winston W. Royce - 1970
Wednesday, April 8, 2009
“Cargo Cult”
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
“SOFT”WARE
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Agilidade NÃO é metodologia
Wednesday, April 8, 2009
Agilidade são valores, cultura.
Wednesday, April 8, 2009
1Wednesday, April 8, 2009
2Wednesday, April 8, 2009
1993
“Matz”
Wednesday, April 8, 2009
2001
“Prag Dave”
Wednesday, April 8, 2009
2004
“DHH”
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
“Tornar as coisas simples fáceis e as coisas
complexas possíveis”
Filosofia Ruby do 80/20
Wednesday, April 8, 2009
Ruby on Rails
Wednesday, April 8, 2009
RUBY
Wednesday, April 8, 2009
ActiveSupportRails
RUBY
Wednesday, April 8, 2009
ActionPack
ActionController
ActionView
ActiveSupportRails
RUBY
Wednesday, April 8, 2009
ActiveRecord
ActionPack
ActionController
ActionView
ActiveSupportRails
RUBY
Wednesday, April 8, 2009
ActiveRecord
ActionPack
ActionMailer
ActionController
ActionView
ActiveSupportRails
RUBY
Wednesday, April 8, 2009
ActiveRecord
ActionPack
ActiveResource
ActionMailer
ActionController
ActionView
ActiveSupportRails
ActionWebService
RUBY
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category
validates_presence_of :name validates_presence_of :master_price validates_presence_of :description
make_permalink :with => :name, :field => :permalinkend
Model
Wednesday, April 8, 2009
class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category
validates_presence_of :name validates_presence_of :master_price validates_presence_of :description
make_permalink :with => :name, :field => :permalinkend
Model
Product.find(1)
Wednesday, April 8, 2009
<div id="product-listing"> <%= breadcrumbs(@taxon) %> <br/> <%= render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon } %></div>
<% content_for :sidebar do %> <td id="shop-by-col" valign="top"> <%= render :partial => "shared/taxonomies" %> </td><% end %>
<%= render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty? %>
Views ERB
Wednesday, April 8, 2009
#product-listing =breadcrumbs(@taxon) %br =render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon}
-content_for :sidebar do %td#shop-by-col(:valign => "top") =render :partial => "shared/taxonomies" =render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty?
Views HAML
Wednesday, April 8, 2009
class UsersController < Spree::BaseController resource_controller before_filter :initialize_extension_partials actions :all, :except => [:index, :destroy] show.before do @orders = Order.checkout_completed(true) .find_all_by_user_id(current_user.id) end
create.after { self.current_user = @user }
create.response do |wants| wants.html { redirect_back_or_default(products_path) } end end
Controller
Wednesday, April 8, 2009
class UsersController < Spree::BaseController resource_controller before_filter :initialize_extension_partials actions :all, :except => [:index, :destroy] show.before do @orders = Order.checkout_completed(true) .find_all_by_user_id(current_user.id) end
create.after { self.current_user = @user }
create.response do |wants| wants.html { redirect_back_or_default(products_path) } end end
Controller
/users/1
Wednesday, April 8, 2009
ActionController::Routing::Routes.draw do |map| map.connect ':controller/service.wsdl', :action => 'wsdl'
map.resources :products, :member => {:change_image => :post} map.resources :addresses map.resources :orders, :has_many => [:line_items]
map.namespace :admin do |admin| admin.resources :users admin.resources :products endend
Rotas RESTFul
Wednesday, April 8, 2009
ActionController::Routing::Routes.draw do |map| map.connect ':controller/service.wsdl', :action => 'wsdl'
map.resources :products, :member => {:change_image => :post} map.resources :addresses map.resources :orders, :has_many => [:line_items]
map.namespace :admin do |admin| admin.resources :users admin.resources :products endend
Rotas RESTFul
GET /products/newGET /productsPOST /productsGET /products/1GET /products/1/editPUT /products/1DESTROY /products/1
Wednesday, April 8, 2009
class RenameAppConfiguration < ActiveRecord::Migration def self.up rename_table :app_configurations, :configurations change_table :configurations do |t| t.string :type end end
def self.down change_table :configurations do |t| t.remove :type end rename_table :configurations, :app_configurations endend
Migrations
Wednesday, April 8, 2009
class RenameAppConfiguration < ActiveRecord::Migration def self.up rename_table :app_configurations, :configurations change_table :configurations do |t| t.string :type end end
def self.down change_table :configurations do |t| t.remove :type end rename_table :configurations, :app_configurations endend
Migrations
rake db:migrate
Wednesday, April 8, 2009
describe Product do include ProductSpecHelper
before(:each) do @product = Product.new end
it "should not be valid when empty" do @product.should_not be_valid end
it "should be valid when having correct information" do @product.attributes = valid_product_attributes @product.should be_valid endend
RSpec
Wednesday, April 8, 2009
describe Product do include ProductSpecHelper
before(:each) do @product = Product.new end
it "should not be valid when empty" do @product.should_not be_valid end
it "should be valid when having correct information" do @product.attributes = valid_product_attributes @product.should be_valid endend
RSpec
rake spec
Wednesday, April 8, 2009
Cucumber
Funcionalidade: Criar Post no Blog
Para conseguir divulgar minhas idéiasComo um bloggerEu quero conseguir criar um post no meu blog
Cenário: Criando um novo Post
Dado que estou na página de Administração E que eu preencho o formulário de novo post Então quero conseguir visualizar o título do novo post na homepage
Wednesday, April 8, 2009
“Beautiful Code”
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
11 mil classes!
46 só de Collections!
Wednesday, April 8, 2009
• Modules:
• Enumerable
• Comparable
• Classes:
• Array
• Hash
• Set
• Sorted Set
Wednesday, April 8, 2009
• Modules:
• Enumerable
• Comparable
• Classes:
• Array
• Hash
• Set
• Sorted Set
1.400classes
só 6 de Collections!
Wednesday, April 8, 2009
• Convention over Configuration
• Don’t Repeat Yourself
• You Ain’t Gonna Need It
• Boas Práticas
• Escalabilidade
• Segurança
• Automação
Wednesday, April 8, 2009
2Wednesday, April 8, 2009
3Wednesday, April 8, 2009
Mitos
Wednesday, April 8, 2009
Rails não Escala
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Blaine Cook
http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter
Para colocar as coisas em perspectiva, o Friendster foi
escrito em Java no começo, mas mudou para PHP. O MySpace foi
escrito em ColdFusion e transicionou para ASP.NET.
Quando as pessoas caem em problemas de escalabilidade,
costumam pensar sempre que o problema é a linguagem, mas eu acho que esse raramente é o
caso.
Wednesday, April 8, 2009
http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise?fp=16&fpid=1
“O New York Times usou Ruby on Rails para juntar, analisar e mostrar resultados das eleições quase em
real time em um dos dias mais congestionados de tráfego que já se viu. ”
Wednesday, April 8, 2009
http://www.railsonwave.com/railsonwave/2008/6/4/yellowpages-com-migrates-to-rails
“Eles servem mais de 23 milhões de visitantes por mês. A conversão resultou em 20 mil linhas de código Ruby em vez de 125 mil de Java, e mais importante, facilitou a dificuldade que tinham em manter isso. Uma vez finalizado e otimizado o site
deles agora é mais rápido que antes. Eles também finalizaram a re-escrita em 3 meses com 4 desenvolvedores.”
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Mitos
Wednesday, April 8, 2009
Rails é mal documentado
Wednesday, April 8, 2009
Geoffrey
Wednesday, April 8, 2009
Jason e Gregg
Wednesday, April 8, 2009
Pratik Naik
Wednesday, April 8, 2009
Satish Talim
Wednesday, April 8, 2009
Peter Cooper
Wednesday, April 8, 2009
Peter Cooper
Wednesday, April 8, 2009
_why
Wednesday, April 8, 2009
Ryan Bates
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
3Wednesday, April 8, 2009
4Wednesday, April 8, 2009
Open Source
Wednesday, April 8, 2009
Chris Wanstrath
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
Wednesday, April 8, 2009
4Wednesday, April 8, 2009
“Especialista de uma coisa só é um amador em todo o
resto.”
Wednesday, April 8, 2009