Ruby on Rails
   Magnum Fonseca | Thales Lima | Weslley Almeida
Ruby   > O que é Ruby?
       > Ruby é uma linguagem interpretada
         multiparadigma, dinâmica e open source
         com foco na simplicidade e
         produtividade.

       > Seus objetos e classes podem ser
         alterados em tempo de execução. Além
         disso é totalmente orientada a
         objetos, ou seja, em Ruby tudo é um
         objeto.
> Como Surgiu?

> Desenvolvido no Japão em 1995, por Yukihiro
  “Matz” Matsumoto.

> Matz desejava uma linguagem
  mais poderosa que Perl e mais
  orientada a objetos que Python.
  A partir disso Matz decidiu
  desenhar     a    sua   própria
  linguagem de programação.
> Como Surgiu?

Nós somos os
mestres

Eles são os
escravos
Diferenças de outras linguagens

> Interpretadores
  * O interpretador Ruby é o programa que faz todo o
    trabalho pesado e roda seu código Ruby. No entanto
    existem diversos interpretadores:
  * MRI (Matz Ruby Interpreter)
  * JRuby
  * IronRuby
  * MacRuby
  * Etc…
Diferenças de outras linguagens

> Gems
 * Gem é um pacote ou uma aplicação escrita em ruby.
   Essas bibliotecas podem ser instaladas e divulgadas
   em diversos computadores, como as “libs” em C.

 * Uma adição interessante é que é muito fácil instalar
   uma gem

                gem install rails
Diferenças de outras linguagens

            > IRB (Interactive      Ruby
             Execution)
              * Basicamente um shell para
                Ruby. É um interpretador
                em tempo real dos códigos
                digitados.
              * É um método ágil de testar
                seus    códigos  ou    de
                aprender Ruby
> O que Ruby tem
 de tão legal?
> Tudo é objeto!
 * Não existe variável primitiva
 * +, -, /… são todos métodos
> Syntax Sugar
 * Linguagem onde o que importa é a
   beleza do código, expressividade do
   mesmo
 * Algumas regras podem ser
   quebradas, para que o código seja
   melhor entendido por humanos
> Syntax Sugar
if(a<b){
  System.out.println("a é menor");
}


puts("a é menor") if(a.<(b))
puts "a é menor" if a < b
> Duck typing
 * Se ele anda como um pato, e faz quack
   como um pato, eu devo tratá-lo como um
   pato

 * Foco no que os objetos podem fazer, não
   no que eles são
>
 Metaprogamação
  * Linguagem dinâmica

  * Código gerando código

  * Código modificando código
> Blocos
 * Uma das coisas mais poderosas em Ruby

 * É um bloco, um fechamento do código
   que recebe código como parâmetro

 * Como um iterador mas executa códigos
> Códigos legais
 * Métodos recebem Hash de parâmetros

 * Unless
Rails   > O que é Rails?
        <%= Ruby on Rails é um framework livre que
        promete aumentar velocidade e facilidade no
        desenvolvimento de sites orientados a banco de
        dados (database-driven web sites), uma vez que é
        possível criar aplicações com base em estruturas
        pré-definidas. %>

        <%= Frequentemente referenciado como Rails ou
        RoR, o Ruby on Rails é um projeto de código aberto
        escrito na linguagem de programação Ruby. %>
> O início
David Hannson em 2004

Extraído do trabalho dele
na 37Signals
> Do que é formado?
> Rails é um meta-framework formado
  de:
  – Action Pack;
  – Action Mailer;
  – Active Record;
  – Active Support;
  – Active Web Services.
> MVC
> Model-view-controller (MVC) é um
  padrão de arquitetura de software que
  visa separar a lógica de negócio da lógica
  de apresentação, permitindo o
  desenvolvimento, teste e manutenção
  isolado de ambos
> MVC
> Model
> View
> Controller
> Filosofias

> Filosofias tem um pé (ou os dois)
 nas metodologias ágeis e em seus
 designs
> Filosofias
Dont
Repeat
R
Yourself
Y
> Filosofias
Convention
Over
O
Configuration
C
> Produtividade
 > Active Record
c = Celular.new
c.nome = "Galaxy S II"
c.preco = 2000
 Design Pattern, Framework
c.save


 ORM
=== Em SQL ===

INSERT INTO CELULARES(NOME,PRECO) VALUES ("Galaxy S
II", 2000);
> Produtividade
 > Action Pack
  Pacote que gerencia as ações que
  ocorrem na aplicação, do request ao
  response
> Action Pack
 > Action Controller
  Gerencia o que ocorre na
  Controller, quais ações e como elas
  devem ser tomadas
> Action Pack
 > Action View
     * os celulares:como os dados serão c.nome
 Todos
       Gerencia <%= @celulares.collect { |c|
     apresentados na tela %>
                     }.join ", "


     * .erb, rotas, …
> Comandos!!!
> Novo projeto
rails new <nome>
> Scaffold
 rails generate
 scaffold
 <modelo com
 atributos>
> Rake
 rake <script>
> Quem usa?



> Diversas empresas utilizam o Rails
  para seus sites
> Basecamp
> Twitter
> github
> Groupon
> E na PT Inovação?
> Wardon
> Dialogus
> Tornar as coisas
 simples fáceis, e
 as complexas
 possíveis
> puts “Muito Obrigado!”
=> nil

Ruby e Rails

  • 1.
    Ruby on Rails Magnum Fonseca | Thales Lima | Weslley Almeida
  • 2.
    Ruby > O que é Ruby? > Ruby é uma linguagem interpretada multiparadigma, dinâmica e open source com foco na simplicidade e produtividade. > Seus objetos e classes podem ser alterados em tempo de execução. Além disso é totalmente orientada a objetos, ou seja, em Ruby tudo é um objeto.
  • 3.
    > Como Surgiu? >Desenvolvido no Japão em 1995, por Yukihiro “Matz” Matsumoto. > Matz desejava uma linguagem mais poderosa que Perl e mais orientada a objetos que Python. A partir disso Matz decidiu desenhar a sua própria linguagem de programação.
  • 4.
    > Como Surgiu? Nóssomos os mestres Eles são os escravos
  • 5.
    Diferenças de outraslinguagens > Interpretadores * O interpretador Ruby é o programa que faz todo o trabalho pesado e roda seu código Ruby. No entanto existem diversos interpretadores: * MRI (Matz Ruby Interpreter) * JRuby * IronRuby * MacRuby * Etc…
  • 6.
    Diferenças de outraslinguagens > Gems * Gem é um pacote ou uma aplicação escrita em ruby. Essas bibliotecas podem ser instaladas e divulgadas em diversos computadores, como as “libs” em C. * Uma adição interessante é que é muito fácil instalar uma gem gem install rails
  • 7.
    Diferenças de outraslinguagens > IRB (Interactive Ruby Execution) * Basicamente um shell para Ruby. É um interpretador em tempo real dos códigos digitados. * É um método ágil de testar seus códigos ou de aprender Ruby
  • 8.
    > O queRuby tem de tão legal?
  • 9.
    > Tudo éobjeto! * Não existe variável primitiva * +, -, /… são todos métodos
  • 10.
    > Syntax Sugar * Linguagem onde o que importa é a beleza do código, expressividade do mesmo * Algumas regras podem ser quebradas, para que o código seja melhor entendido por humanos
  • 11.
    > Syntax Sugar if(a<b){ System.out.println("a é menor"); } puts("a é menor") if(a.<(b)) puts "a é menor" if a < b
  • 12.
    > Duck typing * Se ele anda como um pato, e faz quack como um pato, eu devo tratá-lo como um pato * Foco no que os objetos podem fazer, não no que eles são
  • 13.
    > Metaprogamação * Linguagem dinâmica * Código gerando código * Código modificando código
  • 14.
    > Blocos *Uma das coisas mais poderosas em Ruby * É um bloco, um fechamento do código que recebe código como parâmetro * Como um iterador mas executa códigos
  • 15.
    > Códigos legais * Métodos recebem Hash de parâmetros * Unless
  • 16.
    Rails > O que é Rails? <%= Ruby on Rails é um framework livre que promete aumentar velocidade e facilidade no desenvolvimento de sites orientados a banco de dados (database-driven web sites), uma vez que é possível criar aplicações com base em estruturas pré-definidas. %> <%= Frequentemente referenciado como Rails ou RoR, o Ruby on Rails é um projeto de código aberto escrito na linguagem de programação Ruby. %>
  • 17.
    > O início DavidHannson em 2004 Extraído do trabalho dele na 37Signals
  • 18.
    > Do queé formado? > Rails é um meta-framework formado de: – Action Pack; – Action Mailer; – Active Record; – Active Support; – Active Web Services.
  • 19.
    > MVC > Model-view-controller(MVC) é um padrão de arquitetura de software que visa separar a lógica de negócio da lógica de apresentação, permitindo o desenvolvimento, teste e manutenção isolado de ambos
  • 20.
    > MVC > Model >View > Controller
  • 21.
    > Filosofias > Filosofiastem um pé (ou os dois) nas metodologias ágeis e em seus designs
  • 22.
  • 23.
  • 24.
    > Produtividade >Active Record c = Celular.new c.nome = "Galaxy S II" c.preco = 2000 Design Pattern, Framework c.save ORM === Em SQL === INSERT INTO CELULARES(NOME,PRECO) VALUES ("Galaxy S II", 2000);
  • 25.
    > Produtividade >Action Pack Pacote que gerencia as ações que ocorrem na aplicação, do request ao response
  • 26.
    > Action Pack > Action Controller Gerencia o que ocorre na Controller, quais ações e como elas devem ser tomadas
  • 27.
    > Action Pack > Action View * os celulares:como os dados serão c.nome Todos Gerencia <%= @celulares.collect { |c| apresentados na tela %> }.join ", " * .erb, rotas, …
  • 28.
  • 29.
  • 30.
    > Scaffold railsgenerate scaffold <modelo com atributos>
  • 31.
    > Rake rake<script>
  • 32.
    > Quem usa? >Diversas empresas utilizam o Rails para seus sites
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
    > E naPT Inovação?
  • 38.
  • 39.
  • 40.
    > Tornar ascoisas simples fáceis, e as complexas possíveis
  • 41.
    > puts “MuitoObrigado!” => nil