0
Introdução ao Ruby on Rails




           Introdução ao Ruby on Rails
Introdução ao Ruby on Rails > Palestrante




           Juan Maiz Lulkin Flores da Cunha
                    WWR person/9...
Introdução ao Ruby on Rails > História




           História
                    David Heinemeier Hanson (DHH)
         ...
Introdução ao Ruby on Rails > Ruby on Rails




           Ruby on Rails
                   Ruby
                   Model ...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby




           Ruby
                   Smalltalk
                      ...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Smalltalk




           Smalltalk
                   1 + 1
         ...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Python




           Python
                   for 1 in 1..10
      ...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Perl




           Perl
                   ls = %w{smalltalk python ...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Hello




           Ruby
                   5.times{ p “ybuR olleH”....
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos




           Ruby
                   Totalmente OO
      ...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Totalmente OO




          Totalmente OO
               ...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Mixins (toma essa!)




           Mixins (toma essa!)
  ...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Classes “abertas”




           Classes “abertas”
      ...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Blocos




           Blocos
                   [16,19,21...
Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Bibliotecas




           Bibliotecas
                  ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller




           Model View Controller
                 ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model




           Model
                   Active...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Migrações




           Migrações
         ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas




           Operações b...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas




           Operações b...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas




           Operações b...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas




           Operações b...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Relações




           Relações
           ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Relações




           Relações
           ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Validações




           Validações
       ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Acts as




           Acts As
             ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Acts as




           Acts As
             ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Named scopes




           Named scopes
   ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Adicionar métodos




           Adicionar m...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Controller




           Controller
               ...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > View




           View
                   app/view...
Introdução ao Ruby on Rails > Ruby on Rails > Princípios




           Princípios
                    Convention Over Con...
Introdução ao Ruby on Rails > Ruby on Rails > Princípios > CoC




           Convention Over Configuration
              ...
Introdução ao Ruby on Rails > Ruby on Rails > Princípios > CoC




           Convention Over Configuration
              ...
Introdução ao Ruby on Rails > Ruby on Rails > Princípios > CoC




           Convention Over Configuration
              ...
Introdução ao Ruby on Rails > Ruby on Rails > Princípios > DRY




           Don't Repeat Yourself
                   act...
Introdução ao Ruby on Rails > Ruby on Rails > Princípios > Métodos ágeis




           Métodos ágeis
                   c...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Princípios > Métodos ágeis




           Métodos ág...
Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Princípios > Métodos ágeis




           Métodos ág...
Introdução ao Ruby on Rails > Ruby on Rails > Comunidade




          Comunidade
                   Lista rails-br
      ...
Introdução ao Ruby on Rails > Ruby on Rails > And so much more




          And so much more
                   Internaci...
Introdução ao Ruby on Rails > Fim




           Fim
Upcoming SlideShare
Loading in...5
×

Introdução ao Ruby on Rails

2,780

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
2,780
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
32
Comments
0
Likes
0
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. Introdução ao Ruby on Rails > Palestrante Juan Maiz Lulkin Flores da Cunha WWR person/9354 vice-campeão mundial de defender of the favicon
  3. 3. Introdução ao Ruby on Rails > História História David Heinemeier Hanson (DHH) Martin Fowler 37Signals
  4. 4. Introdução ao Ruby on Rails > Ruby on Rails Ruby on Rails Ruby Model View Controller Princípios Comunidade And so much more
  5. 5. Introdução ao Ruby on Rails > Ruby on Rails > Ruby Ruby Smalltalk elegância conceitual Python facilidade de uso Perl pragmatismo
  6. 6. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Smalltalk Smalltalk 1 + 1 => 2 1.+(1) => 2 1.send('+',1) => 2
  7. 7. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Python Python for 1 in 1..10 puts i end 1 2 3 4 5 6
  8. 8. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Perl Perl ls = %w{smalltalk python perl} => ["smalltalk", "python", "perl"] ls.map{|l| “Ruby é como #{l}. ” }.join => “Ruby é como smalltalk. Ruby é como python. Ruby é como perl.
  9. 9. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Hello Ruby 5.times{ p “ybuR olleH”.reverse } "Hello Ruby" "Hello Ruby" "Hello Ruby" "Hello Ruby" "Hello Ruby" => 5
  10. 10. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos Ruby Totalmente OO Mixins (toma essa!) Classes “abertas” Blocos Bibliotecas
  11. 11. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Totalmente OO Totalmente OO 42.class => Fixnum Fixnum.class => Class
  12. 12. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Mixins (toma essa!) Mixins (toma essa!) module Cool def is_cool! “#{self} is cool!” end end
  13. 13. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Classes “abertas” Classes “abertas” class String include Cool end puts “Ruby”.is_cool! Ruby is cool!
  14. 14. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Blocos 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 { ... }
  15. 15. Introdução ao Ruby on Rails > Ruby on Rails > Ruby > Conceitos > Bibliotecas 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 "Hello Windows" } RubyGame Game.new.when_key_pressed(:q){ exit } Geokit YahooGeocoder.geocode 'Rua Vieira de Casto 262'
  16. 16. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller Model View Controller Model dados e lógica de domínio View interface Controller caminhos e distribuição
  17. 17. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model Model ActiveRecord Migrações Operações básicas Relações Validações Acts as Named scopes Adicionar métodos
  18. 18. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Migrações 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
  19. 19. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas 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
  20. 20. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas 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
  21. 21. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas 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
  22. 22. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Operações básicas Operações básicas Delete Event.delete_all e = Event.first e.destroy
  23. 23. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Relações Relações class Event < ActiveRecord::Base has_many :talks end class Talk < ActiveRecord::Base belongs_to :event has_one :speaker end
  24. 24. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Relações 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”
  25. 25. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Validações 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
  26. 26. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Acts as Acts As class Category < ActiveRecord::Base acts_as_tree enb Category.find(10).parent Category.find(20).children
  27. 27. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Acts as 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
  28. 28. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Named scopes 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
  29. 29. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Model > Adicionar métodos Adicionar métodos class Product < ActiveRecord::Base def +(product) price + product.price end end foo = Product.find(1) bar = Product.find(2) foo + bar
  30. 30. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Controller Controller URL: http://seusite.com/events/rsrails class EventsController < ApplicationController def show name = params[:id] @event = Event.find_by_name(name) end end
  31. 31. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > View 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?
  32. 32. Introdução ao Ruby on Rails > Ruby on Rails > Princípios 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...
  33. 33. Introdução ao Ruby on Rails > Ruby on Rails > Princípios > CoC Convention Over Configuration XML YAML development: adapter: postgresql encoding: unicode database: events_development pool: 5 username: event_admin password: *****
  34. 34. Introdução ao Ruby on Rails > Ruby on Rails > Princípios > CoC 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”
  35. 35. Introdução ao Ruby on Rails > Ruby on Rails > Princípios > CoC Convention Over Configuration script/generate scaffold Event name:string year:integer active:boolean
  36. 36. Introdução ao Ruby on Rails > Ruby on Rails > Princípios > DRY Don't Repeat Yourself active_scaffold link_to login image_tag 'star.png' * hotel.stars render :partial => 'event', :collection => @events
  37. 37. Introdução ao Ruby on Rails > Ruby on Rails > Princípios > Métodos ágeis Métodos ágeis class EventTest < ActiveSupport::TestCase test "creation" do assert Event.create :name => 'rsrails', :year => 2009 end end
  38. 38. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Princípios > Métodos ágeis Métodos ágeis rake integrate cap deploy
  39. 39. Introdução ao Ruby on Rails > Ruby on Rails > Model View Controller > Princípios > Métodos ágeis Métodos ágeis Getting Real http://gettingreal.37signals.com/
  40. 40. Introdução ao Ruby on Rails > Ruby on Rails > Comunidade Comunidade Lista rails-br Ruby Inside (.com e .com.br) Working With Rails
  41. 41. Introdução ao Ruby on Rails > Ruby on Rails > And so much more And so much more Internacionalização (i18n) Rotas Cache Ajax Background Jobs ...
  42. 42. Introdução ao Ruby on Rails > Fim Fim
  1. A particular slide catching your eye?

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

×