Your SlideShare is downloading. ×
0
Introdução ao Ruby on Rails Introdução ao Ruby on Rails
Juan Maiz Lulkin Flores da Cunha Introdução ao Ruby on Rails > Palestrante WWR person/9354 vice-campeão mundial de defende...
História David Heinemeier Hanson (DHH) Martin Fowler 37Signals Introdução ao Ruby on Rails  > História
Ruby on Rails Ruby Model View Controller Princípios Comunidade And so much more Introdução ao Ruby on Rails  > Ruby on Rails
Ruby Smalltalk elegância conceitual Python  facilidade de uso Perl pragmatismo Introdução ao Ruby on Rails  > Ruby on Rail...
Smalltalk 1 + 1 => 2 1.+(1) => 2   1.send('+',1) => 2 Introdução ao Ruby on Rails  > Ruby on Rails > Ruby  > Smalltalk
Python for 1 in 1..10 puts i end 1 2 3 4 5 6 7 Introdução ao Ruby on Rails  > Ruby on Rails > Ruby > Python
Perl ls = %w{smalltalk python perl} => ["smalltalk", "python", "perl"] ls.map{|l| “Ruby é co...
Ruby 5.times{ p “ybuR olleH”.reverse } "Hello Ruby" "Hello Ruby" "Hello Ruby" "Hello Ru...
Ruby Totalmente OO Mixins (toma essa!) Classes “abertas” Blocos Bibliotecas Introdução ao Ruby on Rails  > Ruby on Rails >...
Totalmente OO 42.class => Fixnum Fixnum.class => Class Introdução ao Ruby on Rails  > Ruby on Rails > Ruby  > Conceitos > ...
Mixins (toma essa!) module Cool def is_cool! “ #{self} is cool!” end end Introdução ao Ruby on Rails  > Ruby on Rails > Ru...
Classes “abertas” class String include Cool end puts “Ruby”.is_cool! Ruby is cool! Introdução ao Ruby on Rails  > Ruby on ...
Blocos [16,19,21,15].select{|n| n > 17} => [19,21] [1,2,3].map{|n| n*2 } => [2,4,6] [5,6,7,8].sort_by{ … } File.open('file...
Bibliotecas Hpricot + OpenUri Hpricot(open 'http://ab.com').search('a').map{|a| a[:href]} Prawn Prawn::Document.new.text(“...
Model View Controller Model dados e lógica de domínio View interface Controller caminhos e distribuição   Introdução ao Ru...
Model ActiveRecord Migrações Operações básicas Relações Validações Acts as Named scopes Adicionar métodos Introdução ao Ru...
Migrações class CreateEvents < ActiveRecord::Migration def self.up create_table :events do |t| t.string :name, :null => fa...
Operações básicas Insert Event.create :name => 'RS on Rails', :year => Date.today.year e = Event.new e.name = 'RS on Rails...
Operações básicas Select Event.all :conditions => 'active', :order => 'created_at', :limit => 10 e = Event.first e = Event...
Operações básicas Update Event.update_all 'active = true' e = Event.first e.name = 'other name' e.save e.update_attribute ...
Operações básicas Delete Event.delete_all e = Event.first e.destroy Introdução ao Ruby on Rails  > Ruby on Rails > Model V...
Relações class Event < ActiveRecord::Base has_many :talks end class Talk < ActiveRecord::Base belongs_to :event has_one :s...
Relações rsr = Event.find_by_name('rsrails') talk = rsr.talks.first talk.name => “Introdução ao Ruby on Rails” talk.speake...
Validações class Event < ActiveRecord::Base validates_presence_of :name, :year validates_numericality_of :year validates_i...
Acts As class Category < ActiveRecord::Base acts_as_tree enb Category.find(10).parent Category.find(20).children Introduçã...
Acts As class Doc < ActiveRecord::Base acts_as_versioned end doc = Doc.create :name = '1 st  name' doc.version => 1 doc.up...
Named scopes class Product < ActiveRecord::Base named_scope :top, :order => 'rank desc' named_scope :ten, :limit => 10 nam...
Adicionar métodos class Product < ActiveRecord::Base def +(product) price + product.price  end end foo = Product.find(1) b...
Controller URL:  http://seusite.com/events/rsrails class EventsController < ApplicationController def show name = params[:...
View app/views/events/show.html.haml #content %h1 Palestras %ul - for talk in @event.talks %li= talk.title * Você está usa...
Princípios Convention Over Configuration Se é usado na maior parte dos casos, deve ser o padrão. Don't Repeat Yourself Mix...
Convention Over Configuration XML  YAML development: adapter: postgresql encoding: unicode database: events_development po...
Convention Over Configuration rsrails = Event.find(1) => assume campo “id” na tabela “events” rsrails.talks => assume uma ...
Convention Over Configuration script/generate scaffold Event name:string year:integer active:boolean Introdução ao Ruby on...
Don't Repeat Yourself active_scaffold link_to login image_tag 'star.png' * hotel.stars render :partial => 'event', :collec...
Métodos ágeis class EventTest < ActiveSupport::TestCase test &quot;creation&quot; do assert Event.create :name => 'rsrails...
Métodos ágeis rake integrate cap deploy Introdução ao Ruby on Rails  > Ruby on Rails > Model View Controller > Princípios ...
Métodos ágeis Getting Real http://gettingreal.37signals.com/ Introdução ao Ruby on Rails  > Ruby on Rails > Model View Con...
Comunidade Lista rails-br Ruby Inside (.com e .com.br) Working With Rails Introdução ao Ruby on Rails  > Ruby on Rails > C...
And so much more Internacionalização (i18n) Rotas Cache Ajax Background Jobs ... Introdução ao Ruby on Rails  > Ruby on Ra...
Fim Introdução ao Ruby on Rails  > Fim
Upcoming SlideShare
Loading in...5
×

Introdução ao Ruby on Rails

3,025

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,025
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Introdução ao Ruby on Rails"

  1. 1. Introdução ao Ruby on Rails Introdução ao Ruby on Rails
  2. 2. Juan Maiz Lulkin Flores da Cunha Introdução ao Ruby on Rails > Palestrante WWR person/9354 vice-campeão mundial de defender of the favicon
  3. 3. História David Heinemeier Hanson (DHH) Martin Fowler 37Signals Introdução ao Ruby on Rails > História
  4. 4. Ruby on Rails Ruby Model View Controller Princípios Comunidade And so much more Introdução ao Ruby on Rails > Ruby on Rails
  5. 5. Ruby Smalltalk elegância conceitual Python facilidade de uso Perl pragmatismo Introdução ao Ruby on Rails > Ruby on Rails > Ruby
  6. 6. Smalltalk 1 + 1 => 2 1.+(1) => 2 1.send('+',1) => 2 Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Smalltalk
  7. 7. Python for 1 in 1..10 puts i end 1 2 3 4 5 6 7 Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Python
  8. 8. Perl ls = %w{smalltalk python perl} => [&quot;smalltalk&quot;, &quot;python&quot;, &quot;perl&quot;] ls.map{|l| “Ruby é como #{l}. ” }.join => “Ruby é como smalltalk. Ruby é como python. Ruby é como perl. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Perl
  9. 9. Ruby 5.times{ p “ybuR olleH”.reverse } &quot;Hello Ruby&quot; &quot;Hello Ruby&quot; &quot;Hello Ruby&quot; &quot;Hello Ruby&quot; &quot;Hello Ruby&quot; => 5 Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Hello
  10. 10. Ruby Totalmente OO Mixins (toma essa!) Classes “abertas” Blocos Bibliotecas Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos
  11. 11. Totalmente OO 42.class => Fixnum Fixnum.class => Class Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Totalmente OO
  12. 12. Mixins (toma essa!) module Cool def is_cool! “ #{self} is cool!” end end Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Mixins (toma essa!)
  13. 13. Classes “abertas” class String include Cool end puts “Ruby”.is_cool! Ruby is cool! Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Classes “abertas”
  14. 14. Blocos [16,19,21,15].select{|n| n > 17} => [19,21] [1,2,3].map{|n| n*2 } => [2,4,6] [5,6,7,8].sort_by{ … } File.open('file.txt').each_line{ … } Dir.glob('*.rb').each{ … } Benchmark.measure { ... } Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Blocos
  15. 15. Bibliotecas Hpricot + OpenUri Hpricot(open 'http://ab.com').search('a').map{|a| a[:href]} Prawn Prawn::Document.new.text(“Hello PDF”) RedCloth RedCloth.new(“Hello *Textile*”).to_html RMagick Image.read('i.pdf').first.write('i.png'){self.quality = 80} Shoes Shoes.app{ button &quot;Hello Windows&quot; } RubyGame Game.new.when_key_pressed(:q){ exit } Geokit YahooGeocoder.geocode 'Rua Vieira de Casto 262' Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Bibliotecas
  16. 16. Model View Controller Model dados e lógica de domínio View interface Controller caminhos e distribuição Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller
  17. 17. Model ActiveRecord Migrações Operações básicas Relações Validações Acts as Named scopes Adicionar métodos Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model
  18. 18. Migrações class CreateEvents < ActiveRecord::Migration def self.up create_table :events do |t| t.string :name, :null => false t.boolean :active, :default => true t.integer :year, :null => false t.timestamps end end end Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Migrações
  19. 19. Operações básicas Insert Event.create :name => 'RS on Rails', :year => Date.today.year e = Event.new e.name = 'RS on Rails' e.year = 2009 e.save Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas
  20. 20. Operações básicas Select Event.all :conditions => 'active', :order => 'created_at', :limit => 10 e = Event.first e = Event.find 1 e = Event.find_by_name 'RS on Rails' e = Event.find_by_year 2009 Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas
  21. 21. Operações básicas Update Event.update_all 'active = true' e = Event.first e.name = 'other name' e.save e.update_attribute :active => false e.toggle! :active Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas
  22. 22. Operações básicas Delete Event.delete_all e = Event.first e.destroy Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas
  23. 23. Relações class Event < ActiveRecord::Base has_many :talks end class Talk < ActiveRecord::Base belongs_to :event has_one :speaker end Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Relações
  24. 24. Relações rsr = Event.find_by_name('rsrails') talk = rsr.talks.first talk.name => “Introdução ao Ruby on Rails” talk.speaker.name => “Juan Maiz Lulkin” Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Relações
  25. 25. Validações class Event < ActiveRecord::Base validates_presence_of :name, :year validates_numericality_of :year validates_inclusion_of :year, :in => 2009..2099 validates_length_of :name, :minimum => 4 validates_format_of :name, :with => /[A-Z]d+/ end Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Validações
  26. 26. Acts As class Category < ActiveRecord::Base acts_as_tree enb Category.find(10).parent Category.find(20).children Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Acts as
  27. 27. Acts As class Doc < ActiveRecord::Base acts_as_versioned end doc = Doc.create :name = '1 st name' doc.version => 1 doc.update_attribute :name, '2 nd name' doc.version => 2 doc.revert_to(1) doc.name => 1 st name Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Acts as
  28. 28. Named scopes class Product < ActiveRecord::Base named_scope :top, :order => 'rank desc' named_scope :ten, :limit => 10 named_scope :between, lambda{|min,max| {:conditions => [“price between ? and ?”, min, max]}} end Product.between(0,100).top.ten Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Named scopes
  29. 29. Adicionar métodos class Product < ActiveRecord::Base def +(product) price + product.price end end foo = Product.find(1) bar = Product.find(2) foo + bar Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Adicionar métodos
  30. 30. Controller URL: http://seusite.com/events/rsrails class EventsController < ApplicationController def show name = params[:id] @event = Event.find_by_name(name) end end Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Controller
  31. 31. View app/views/events/show.html.haml #content %h1 Palestras %ul - for talk in @event.talks %li= talk.title * Você está usando HAML, não? Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > View
  32. 32. Princípios Convention Over Configuration Se é usado na maior parte dos casos, deve ser o padrão. Don't Repeat Yourself Mixins, plugins, engines, gems... Métodos ágeis BDD, TDD, integração contínua, deployment... Introdução ao Ruby on Rails > Ruby on Rails > Princípios
  33. 33. Convention Over Configuration XML YAML development: adapter: postgresql encoding: unicode database: events_development pool: 5 username: event_admin password: ***** Introdução ao Ruby on Rails > Ruby on Rails > Princípios > CoC
  34. 34. Convention Over Configuration rsrails = Event.find(1) => assume campo “id” na tabela “events” rsrails.talks => assume uma tabela “talks” com um fk “event_id” rsrails.talks.first.speaker => assume campo “speaker_id” em “talks” como fk para tabela “speakers” Introdução ao Ruby on Rails > Ruby on Rails > Princípios > CoC
  35. 35. Convention Over Configuration script/generate scaffold Event name:string year:integer active:boolean Introdução ao Ruby on Rails > Ruby on Rails > Princípios > CoC
  36. 36. Don't Repeat Yourself active_scaffold link_to login image_tag 'star.png' * hotel.stars render :partial => 'event', :collection => @events Introdução ao Ruby on Rails > Ruby on Rails > Princípios > DRY
  37. 37. Métodos ágeis class EventTest < ActiveSupport::TestCase test &quot;creation&quot; do assert Event.create :name => 'rsrails', :year => 2009 end end Introdução ao Ruby on Rails > Ruby on Rails > Princípios > Métodos ágeis
  38. 38. Métodos ágeis rake integrate cap deploy Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Princípios > Métodos ágeis
  39. 39. Métodos ágeis Getting Real http://gettingreal.37signals.com/ Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Princípios > Métodos ágeis
  40. 40. Comunidade Lista rails-br Ruby Inside (.com e .com.br) Working With Rails Introdução ao Ruby on Rails > Ruby on Rails > Comunidade
  41. 41. And so much more Internacionalização (i18n) Rotas Cache Ajax Background Jobs ... Introdução ao Ruby on Rails > Ruby on Rails > And so much more
  42. 42. Fim Introdução ao Ruby on Rails > Fim
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×