Introdução a Ruby
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Introdução a Ruby

on

  • 1,138 views

 

Statistics

Views

Total Views
1,138
Views on SlideShare
1,138
Embed Views
0

Actions

Likes
3
Downloads
15
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introdução a Ruby Presentation Transcript

  • 1. FREVO ON RAILS GRUPO DE USUÁRIOS RUBY/RAILS DE PERNAMBUCO INTRODUÇÃO A RUBY E RUBY ON RAILS Ruby.new Friday, December 18, 2009
  • 2. FREVO ON RAILS Por que Rails mesmo? • Framework da web 2.0 • Uso crescente desde 2006 • Usado em websites importantes • Twitter Stay Connected OR What are you doing? • Yellow Pages Find it locally. • Scribd Books, presentations and more. • Usado em website desimportantes Friday, December 18, 2009
  • 3. FREVO ON RAILS Por que Rails mesmo? ou simplesmente por que é divertido! • Desenvolver aplicações web é muito trabalhoso • HTML, CSS, Javascript, AJAX, XML… • Rails ajuda a tornar o processo menos penoso Friday, December 18, 2009
  • 4. FREVO ON RAILS RUBY ON RAILS Friday, December 18, 2009
  • 5. FREVO ON RAILS Mais uma linguagem? “Ruby is a dynamic programming language with a complex but expressive grammar and a core class library with a rich and powerful API. Ruby draws inspiration from Lisp, Smalltalk, and Perl, but uses a grammar that is easy for C and JavaTM programmers to learn. Ruby is a pure object-oriented language, but it is also suitable for procedural and functional programming styles. It includes powerful metaprogramming capabilities and can be used to create domain-specific languages or DSLs.” — The Ruby Programming Language, David Flanagan Friday, December 18, 2009
  • 6. FREVO ON RAILS Mais uma linguagem? Ruby is designed to make programmers happy. • Yukihiro Matsumoto (1995) • Versão atual 1.9.1-p376 • Linguagem Interpretada = Lenta • Duck typing “If it walks like a duck and quacks like a duck, it must be a duck” Friday, December 18, 2009
  • 7. FREVO ON RAILS Básico • Declaração de variável local nome_grupo = “Frevo on Rails” • Chamada de método “Frevo on Rails”.upcase nome_grupo.sub(“Frevo”, “Ruby”) • Impressão puts “Frevo on Rails” puts nome_grupo Friday, December 18, 2009
  • 8. FREVO ON RAILS Básico • Declaração e uso de “funções” def repetir(str) puts str * 3 end repetir(“Frevo”) # Retornando valores def repetir(str) return str * 3 end rep = repetir(“Frevo”) puts rep Friday, December 18, 2009
  • 9. FREVO ON RAILS Expressões e Operadores • Tudo é uma expressão • E portanto retorna um resultado nome_grupo = if cidade == “Recife” “Frevo on Rails” else “Não importa” # =D end • if/unless/case • while/until Friday, December 18, 2009
  • 10. FREVO ON RAILS Expressões e Operadores • for • Não existe o “for tradicional” • Mas lembra que tudo é objeto? 3.times do |i| puts “Iterando pela #{i+1} vez.” end • Interpolação de Strings nome = “Frevo” nome + “ on Rails” = “#{nome} on Rails” Friday, December 18, 2009
  • 11. FREVO ON RAILS Arrays • Inicialização numeros = [1, 2, 3] elementos = [1, “a”, true] • Indexação elementos[0] elementos[1] • Crescem automaticamente elementos[10] = “frevo” • size/length, first, last, shuffle, uniq, sort… Friday, December 18, 2009
  • 12. FREVO ON RAILS Hashes • Inicialização • area = {“brasil” => 8514877, “argentina” => 2766890} • capitais = {:pernambuco => “recife”, :piaui => “teresina”} • Indexação • area[“brasil”] • capitais[:pernambuco] • capitais[:paraiba] • Símbolos • Comparação rápida Friday, December 18, 2009
  • 13. FREVO ON RAILS Blocos • Cada chamada pode ter um bloco associado • Como no 3.times… • Característica mais versátil da linguagem IMHO • animais = [“camelo”, “mosca”, “tubarão”] • animais.each do |animal| • puts “#{animal.capitalize} é um animal!” • end Friday, December 18, 2009
  • 14. FREVO ON RAILS Blocos • map • quadrados = [1,2,3,4,5].map do |numero| • numero*numero • end • select • verbos = [“comer”, “caçar”, “estudar”, “limpar”, “coçar”] • verbos_c = verbos.select do |verbo| • verbo.start_with? “c” • end Friday, December 18, 2009
  • 15. FREVO ON RAILS Blocos • each • capitais = {:pernambuco => “recife”, :piaui => “teresina”} • capitais.each do |estado, capital| • puts “A capital de #{estado.to_s.capitalize} é #{capital}” • end • Arquivos • File.open(“arquivo.txt”) do |file| • puts file.read • end Friday, December 18, 2009
  • 16. FREVO ON RAILS Pontuação • Ruby possui convenções de pontuação • Métodos que retornam booleanos terminam com ? • lista.empty? • Métodos que alteram o objeto terminam com ! • lista.sort • lista.sort! • Variáveis globais começam com $ • $parametro = “evil” # não façam isso em casa! Friday, December 18, 2009
  • 17. FREVO ON RAILS Classes • Definição • class Ponto • # Construtor • def initialize(x,y) • @x, @y = x,y • end • end • Instância • p = Ponto.new(10,20) Friday, December 18, 2009
  • 18. FREVO ON RAILS Classes • Variáveis de instância (aka atributos) começam com @ • Variáveis de classe (aka estáticas) começam com @@ • Todas são privadas • Só podem ser acessadas fora da classe por meio de acessores • self se refere ao objeto atual Friday, December 18, 2009
  • 19. FREVO ON RAILS Classes • Em Ruby, as classes são abertas • É possível adicionar métodos a classes já existentes • class Array • def frevo_on_rails • “Frevo on Rails” • end • end • É possível adicionar métodos até a objetos únicos Friday, December 18, 2009
  • 20. FREVO ON RAILS Ainda tem muito mais… • Expressões Regulares • Intervalos • Lançamento/tratamento de exceções • Procs, Lambdas, Fibers, Closures • Reflexão e Metaprogramação • API Rica • Theading, Sistema de Arquivos, Networking, Strings, Datas… Friday, December 18, 2009
  • 21. FREVO ON RAILS Referências The Hummingbird Book The Pickaxe Book Friday, December 18, 2009
  • 22. FREVO ON RAILS Demonstração • Finding mean and median • Doing date arithmetic • Getting the N Smallest Items of an Array • Picking a Random Line from a File • Grabbing the Contents of a Web Page Friday, December 18, 2009
  • 23. FREVO ON RAILS RUBY ON RAILS Friday, December 18, 2009
  • 24. FREVO ON RAILS Mais um framework? • David Heinemeier Hansson (2005), 37signals • Hoje mais de sete mantenedores no core team • Opinionated Software • CoC: Convention over Configuration • DRY: Don’t repeat yourself • KISS: Keep it stupidly simple Friday, December 18, 2009
  • 25. FREVO ON RAILS Demonstração Creating a weblog in 15 minutes http://rubyonrails.org/screencasts Friday, December 18, 2009
  • 26. FREVO ON RAILS Achou difícil? Aldo não… http://www.youtube.com/watch?v=9ertJw5C2H8 Friday, December 18, 2009
  • 27. FREVO ON RAILS Organização Model View Controller Friday, December 18, 2009
  • 28. FREVO ON RAILS Models • Representa a informação da aplicação • Modela o domínio do negócio • Contém todas as regras de negócio • Normalmente corresponde a uma tabela no BD • Dados sempre armazenados em um banco de dados • Cada objeto é identificado por um id único • Mapeamento Objeto-Relacional (ORM) Friday, December 18, 2009
  • 29. FREVO ON RAILS Models • Criação • script/generate model usuario • Corresponde automaticamente à tabela usuários • Migrações • Executa operações no banco de dados • Criação/alteração/remoção de tabelas, índices… • Importação de dados • Permite reproduzir as mesmas operações em produção Friday, December 18, 2009
  • 30. FREVO ON RAILS Models • Operações • new/create • find • find_all • find_by dinâmicos • destroy Friday, December 18, 2009
  • 31. FREVO ON RAILS Models • Validações • validates_presence_of • validates_uniqueness_of • validates_numericality_of • Relacionamentos • belongs_to • has_many Friday, December 18, 2009
  • 32. FREVO ON RAILS Controllers • Controlam o fluxo da aplicação • Recebem a requisição e dados do cliente • Determina que action corresponde a cada URL • Manipula o model e prepara-o para view • “Cola” entre model e view Friday, December 18, 2009
  • 33. FREVO ON RAILS Controllers • Criação • script/generate controller usuarios • Actions REST • index • show • new/create • edit/update • destroy Friday, December 18, 2009
  • 34. FREVO ON RAILS Controllers • Recebendo parâmetros POST e GET • Hash params • Rotas • Que URLs correspondem a cada ação? • connect • resource Friday, December 18, 2009
  • 35. FREVO ON RAILS Views • Formatam os dados para o usuário • Vários formatos suportados • HTML, Javascript/JSON, XML, RSS… • Arquivos de view gerados juntamente com controllers • Embedded Ruby (ERb) • <h1>Olá <%= @usuario.nome %></h1> Friday, December 18, 2009
  • 36. FREVO ON RAILS Views • Pode-se usar estruturas de controle • <ul> • <% @posts.each do |post| %> • <li><%= post.titulo %></li> • <% end %> • </ul> • # • <% if usuario %> • <p>Olá usuário <%= usuario.nome %></p> • <% end %> Friday, December 18, 2009
  • 37. FREVO ON RAILS Views • Helpers • link_to • form_for • Partials • Usados para evitar duplicação de código • Extrair o que for diferente e centralizar o que for igual • render :partial Friday, December 18, 2009
  • 38. FREVO ON RAILS Referências Agile Web Development with Rails The Rails Way Friday, December 18, 2009
  • 39. FREVO ON RAILS Referências Rails Guides http://guides.rubyonrails.org/ Friday, December 18, 2009
  • 40. FREVO ON RAILS GRUPO DE USUÁRIOS RUBY/RAILS DE PERNAMBUCO Friday, December 18, 2009