Your SlideShare is downloading. ×
0
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Esta começando a programar para a web? Então começe com Rails

5,495

Published on

Apresentação realzada na semana acadêmica da Unisul em 2010, apresentando a linguagem Ruby e o framework de desenvolvimento Web Ruby on Rails.

Apresentação realzada na semana acadêmica da Unisul em 2010, apresentando a linguagem Ruby e o framework de desenvolvimento Web Ruby on Rails.

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

No Downloads
Views
Total Views
5,495
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
108
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Começando a programar na Web? Então começe com Ruby on Rails. Ismael Stahelin
  • 2. Precisa de um motivo? Que tal esse?
  • 3. Origem ✔ Japão ✔ Yukihiro Matsumoto “Matz” ✔ 2000 Programming Ruby (Dave Thomas) ✔ 2005 Ruby on Rails (DHH)
  • 4. Matz
  • 5. Ruby “Linguagem de programação dinâmica, interpretada, com uma complexa, mas expressiva grammática e uma biblioteca de classe com um rico e poderoso API” (The Ruby Programming language)
  • 6. Influências ✔ Lisp ✔ Smalltalk ✔ Perl
  • 7. Tipos básicos
  • 8. Variáveis ✔ local = 1 ✔ @instancia = “meu nome” ✔ @@classe = /.*/ ✔ $global = “alguém me vê?”
  • 9. Visibilidade ✔ public ✔ Initialize é sempre private ✔ Todos ✔ protected ✔ Instâncias da classe e subclasses ✔ private ✔ Instâncias da classe e subclasses*
  • 10. Visibilidade para programadores Java “Private é para o Ruby o que Protected é para o Java” def <=>(other) self.age <=> other.age end
  • 11. public, protected, private class Carro public ou protected ou private def ano @ano end def ano=(ano) @ano = ano end end
  • 12. public, protected, private class Carro def ano @ano end def ano=(ano) @ano = ano End public :ano, :ano= protected :ano, :ano= private :ano, :ano= end
  • 13. Blocos de código #executando métodos que aceitam blocos metodo do |var| #corpo do bloco end ou metodo { |var| #corpo do bloco }
  • 14. Orientação a objetos ✔ Tudo é um objeto ✔ Operações são métodos ✔ Métodos sempre retornam valor
  • 15. Tudo é um objeto irb(main):001:0> 1.class #=> Fixnum irb(main):002:0> 1.0.class #=> Float irb(main):003:0> true.class #=> TrueClass irb(main):004:0> false.class #=> FalseClass irb(main):005:0> nil.class #=> NilClass irb(main):006:0> /.*/.class #=> Regexp irb(main):007:0> "Hello".class #=> String irb(main):008:0> :nome.class #=> Symbol
  • 16. Operações são métodos irb(main):002:0> 1.public_methods.sort => ["%", "&", "*", "**", "+", "+@", "-", "- @", "/", "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>", "[]", "^", "__id__", "__send__", "abs", "between?", "ceil", "chr", "class", "clone", "coerce", "display", "div", "divmod", "downto", "dup", "enum_for", "eql?", "equal?", "even?", "extend", "fdiv", "floor", "freeze", "frozen?", "hash", "id", "id2name", "inspect", "instance_eval", "instance_exec" ... ]
  • 17. Métodos sempre retornam valor irb(main):001:0> puts "Hello World" Hello World => nil
  • 18. Mais OO em Ruby ✔ Herança simples ✔ Mixins ✔ Módulos ✔ Duck typing ✔ Tratamento de exceções ✔ Closures ✔ Open classes
  • 19. Open classes class Fixnum def +(outro) self - outro end end
  • 20. Mas isso não é perigoso?
  • 21. “Em toda profssão existem os bons e os maus profssionais”
  • 22. Ruby é multi-paradigma ✔ Orientada a objetos ✔ Procedural ✔ Funcional ✔ Metaprogramação
  • 23. Metaprogramação em Ruby class Aluno #não sabe nada End Exemplo retirado da apostila R71 da Caelum. O melhor exemplo de metaprogramação que eu já vi! class Professor def ensina(aluno) def aluno.escreve “sei escrever!” end end end juca = Aluno.new juca.respond_to? :escreve # => false professor = Professor.new professor.ensina juca juca.escreve # => “sei escrever!”
  • 24. Açucar sintático ✔ attr_accessor ✔ Uso de parêntese opcional ✔ “return” é opcional ✔ API expressiva ✔ 3.times {print “Oi”} ✔ 1.upto(4) {|i| puts i} ✔ 10 + 3 # => 10.+(3)
  • 25. Ok, e porque eu deveria usar Ruby? Fale das vantagens...
  • 26. Pontos positivos ✔ Garbage collector ✔ Extensível via C ✔ Multi-plataforma ✔ DSL File.foreach("arq.txt") { |line| puts line }
  • 27. Pontos negativos ✔ Matemática científca ✔ Manipulação de imagens ✔ Threads ✔ I/O para grandes arquivos ✔ Performance
  • 28. Plataformas ✔ Linux ✔ Mac OS ✔ Windows
  • 29. Implementações ✔ MRI (original) ✔ JRuby ✔ IronRuby ✔ Rubinius ✔ Cardinal ✔ MagLev
  • 30. Já cansou?
  • 31. Instalando o Ruby http://www.ruby-lang.org/en/downloads/ Next > Next > Finish port install ruby sudo apt-get install ruby-full
  • 32. Origem ✔ David Heinemeier Hansson (23) Experiências com Java e PHP ✔ 2005 ✔ Extraído de projeto real ✔ Metaframework Composto por outros frameworks
  • 33. DHH
  • 34. Ruby on Rails ✔ Convention over Confguration ✔ Don't Repeat Yourself ✔ MVC ✔ Modelo de dados avançado ✔ Software com opinião ✔ Scaffold (CRUD)
  • 35. Tirando você e o Zézinho da padaria, quem mais usa Rails?
  • 36. Big players Amazon.com BBC CapGemini BPN Cisco C|Net EA (Electronic Arts) IBM JP Morgan NASA Oakley Oracle Siemens ThoughtWorks Yahoo! Fonte: http://blog.obiefernandez.com/content/2008/03/big-name-compan.html
  • 37. Estrutura do projeto
  • 38. Estrutura do projeto. app : onde fca o código da aplicação controllers : tratam os requests helpers : métodos utilitários, visíveis en controllers e views models : persistência e lógica de negócios views : layouts e páginas dinâmicas confg : arquivos de confguração environments : production, development e test initializers : executados na inicialização da aplicação
  • 39. Estrutura do projeto.. db : arquivos referentes ao banco de dados migrations : migrações da base de dados doc : documentação do código lib : código ruby que não é: controller, model ou helper tasks : tarefas do rake personalizadas log : todos os arquivos de log da aplicação
  • 40. Estrutura do projeto... public : arquivos estáticos images : diretório de imagens javascripts : diretório de javascripts stylesheets : diretório de css script : scripts do Rails como generate e console test : todos os testes da aplicação, de todos os tipos tmp : arquivos temporários de uso do rails vendor : plugins, rubygems e até mesmo o rails
  • 41. Composição ✔ ActiveSupport (infra) ✔ ActiveRecord (persistência) ✔ ActionPack (visualização) ✔ ActionMailer (e-mail) ✔ ActiveResources (RESTfull)
  • 42. Pilhas incluídas ✔ Servidores (WEBrick, Mogrel) ✔ BD (Sqlite3, Mysql, Postgres, Oracle)
  • 43. Boas práticas ✔ Siga as convênções ✔ Modelos gordos ✔ Controllers magros ✔ Nomes de entidades em inglês ✔ Tabelas são entidades no plural ✔ FK = <nome_entidade>_id
  • 44. Scripts ✔ about (informações de versões dos componentes) ✔ console (console com o ambiente da aplicação) ✔ dbconsole (console padrão do banco de dados) ✔ destroy (remover código gerado) ✔ generate (gera código da aplicação automático) ✔ plugin (instala/desinstala plugins) ✔ runner (automatizar tarefas) ✔ server (inicia o servidor da aplicação)
  • 45. Rake para automatizar ✔ Ferramenta de build (make, ant) ✔ Instalação ✔ gem install rake ✔ Tarefas disponíveis ✔ rake -T rake db:create rake db:migrate
  • 46. Migrações ✔ Versionamento do Banco de dados ✔ Executadas 1x (sequencial) ✔ Desenvolvedor é responsável ✔ 2 passos sempre: ✔ Realiza alteração ✔ Desfaz alteração
  • 47. ActiveRecord::Migration class CriarContatos < ActiveRecord::Migrations def self.up create_table :contatos do |t| t.string :nome t.string :email t.string :telefone t.string :endereco end end def self.down drop_table :contatos end end
  • 48. Perguntas?
  • 49. Hands On! Agora vamos ver na prática.
  • 50. http://www.ruby-lang.org Sites http://tryruby.org http://guides.rubyonrails.org http://railsapi.com http://railstips.org http://gemcutter.org http://rubyforge.org http://railscasts.com
  • 51. Livros e apostilas ✔ Ruby on Rails [Rodrigo Urubatan – Novatec] ✔ Caelum – Apostila RR71 ✔ A linguagem de Programação Ruby [Matz]
  • 52. Obrigado :-) ✔ ismael.stahelin@gmail.com ✔ @ismaels ✔ http://ismaels.net

×