0
FREVO ON RAILS
                            GRUPO DE USUÁRIOS RUBY/RAILS DE PERNAMBUCO




                   INTRODUÇÃO A ...
FREVO ON RAILS




                            Por que Rails mesmo?
    • Framework da web 2.0
    • Uso crescente desde 2...
FREVO ON RAILS




                            Por que Rails mesmo?

                                  ou simplesmente

  ...
FREVO ON RAILS




                            RUBY ON RAILS




Friday, December 18, 2009
FREVO ON RAILS




                            Mais uma linguagem?
     “Ruby is a dynamic programming language with a
   ...
FREVO ON RAILS




                            Mais uma linguagem?

                Ruby is designed to make programmers h...
FREVO ON RAILS




                                     Básico
    • Declaração de variável local
             nome_grupo ...
FREVO ON RAILS




                                      Básico
    • Declaração e uso de “funções”
             def repet...
FREVO ON RAILS




                      Expressões e Operadores
    • Tudo é uma expressão
         • E portanto retorna ...
FREVO ON RAILS




                      Expressões e Operadores
    • for
         • Não existe o “for tradicional”
     ...
FREVO ON RAILS




                                   Arrays
    • Inicialização
        numeros = [1, 2, 3]
        eleme...
FREVO ON RAILS




                                   Hashes
    • Inicialização
         • area = {“brasil” => 8514877, “...
FREVO ON RAILS




                                    Blocos

    • Cada chamada pode ter um bloco associado
         • C...
FREVO ON RAILS




                                    Blocos

    • map
         • quadrados = [1,2,3,4,5].map do |numero...
FREVO ON RAILS




                                    Blocos

    • each
         • capitais = {:pernambuco => “recife”, ...
FREVO ON RAILS




                             Pontuação
    • Ruby possui convenções de pontuação
    • Métodos que reto...
FREVO ON RAILS




                                      Classes

    • Definição
         • class Ponto
              • #...
FREVO ON RAILS




                               Classes

    • Variáveis de instância (aka atributos) começam com @
    ...
FREVO ON RAILS




                                        Classes

    • Em Ruby, as classes são abertas
         • É pos...
FREVO ON RAILS




                            Ainda tem muito mais…
    • Expressões Regulares
    • Intervalos
    • Lan...
FREVO ON RAILS




                                         Referências




                            The Hummingbird Bo...
FREVO ON RAILS




                            Demonstração
          • Finding mean and median
          • Doing date ari...
FREVO ON RAILS




                            RUBY ON RAILS




Friday, December 18, 2009
FREVO ON RAILS




                            Mais um framework?

    • David Heinemeier Hansson (2005), 37signals
      ...
FREVO ON RAILS




                              Demonstração




                            Creating a weblog in 15 minu...
FREVO ON RAILS




                               Achou difícil?




                                          Aldo não…
 ...
FREVO ON RAILS




                            Organização


                            Model
                           ...
FREVO ON RAILS




                                 Models

    • Representa a informação da aplicação
         • Modela o...
FREVO ON RAILS




                                      Models
    • Criação
         • script/generate model usuario

  ...
FREVO ON RAILS




                                    Models

         • Operações
              • new/create
           ...
FREVO ON RAILS




                                   Models

         • Validações
              • validates_presence_of
...
FREVO ON RAILS




                            Controllers

    • Controlam o fluxo da aplicação
         • Recebem a requ...
FREVO ON RAILS




                               Controllers
         • Criação
              • script/generate controlle...
FREVO ON RAILS




                                Controllers

         • Recebendo parâmetros POST e GET
              •...
FREVO ON RAILS




                                  Views

    • Formatam os dados para o usuário
    • Vários formatos s...
FREVO ON RAILS




                                        Views

    • Pode-se usar estruturas de controle
         • <ul...
FREVO ON RAILS




                                   Views

    • Helpers
         • link_to
         • form_for

    • P...
FREVO ON RAILS




                                     Referências




                  Agile Web Development with Rails...
FREVO ON RAILS




                            Referências




                                  Rails Guides
            ...
FREVO ON RAILS
                            GRUPO DE USUÁRIOS RUBY/RAILS DE PERNAMBUCO




Friday, December 18, 2009
Upcoming SlideShare
Loading in...5
×

Introdução a Ruby

740

Published on

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

No Downloads
Views
Total Views
740
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
17
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Introdução a Ruby"

  1. 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. 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. 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. 4. FREVO ON RAILS RUBY ON RAILS Friday, December 18, 2009
  5. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 21. FREVO ON RAILS Referências The Hummingbird Book The Pickaxe Book Friday, December 18, 2009
  22. 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. 23. FREVO ON RAILS RUBY ON RAILS Friday, December 18, 2009
  24. 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. 25. FREVO ON RAILS Demonstração Creating a weblog in 15 minutes http://rubyonrails.org/screencasts Friday, December 18, 2009
  26. 26. FREVO ON RAILS Achou difícil? Aldo não… http://www.youtube.com/watch?v=9ertJw5C2H8 Friday, December 18, 2009
  27. 27. FREVO ON RAILS Organização Model View Controller Friday, December 18, 2009
  28. 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. 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. 30. FREVO ON RAILS Models • Operações • new/create • find • find_all • find_by dinâmicos • destroy Friday, December 18, 2009
  31. 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. 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. 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. 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. 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. 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. 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. 38. FREVO ON RAILS Referências Agile Web Development with Rails The Rails Way Friday, December 18, 2009
  39. 39. FREVO ON RAILS Referências Rails Guides http://guides.rubyonrails.org/ Friday, December 18, 2009
  40. 40. FREVO ON RAILS GRUPO DE USUÁRIOS RUBY/RAILS DE PERNAMBUCO Friday, December 18, 2009
  1. A particular slide catching your eye?

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

×