ruby e rails
DESCRIPTION
Um pouco sobre a história e funcionalidades do Ruby e como juntou-se com o Rails. Um pouco também dos projetos na PTInovação que se utilizam dessas tecnologias.TRANSCRIPT
![Page 1: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/1.jpg)
Ruby on RailsMagnum Fonseca | Thales Lima | Weslley Almeida
![Page 2: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/2.jpg)
> 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.
Ruby
![Page 3: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/3.jpg)
> 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.
![Page 4: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/4.jpg)
> Como Surgiu?
Eles são os escravos
Nós somos os mestres
![Page 5: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/5.jpg)
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…
![Page 6: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/6.jpg)
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
![Page 7: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/7.jpg)
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
![Page 8: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/8.jpg)
> O que Ruby tem de tão legal?
![Page 9: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/9.jpg)
> Tudo é objeto!* Não existe variável primitiva
* +, -, /… são todos métodos
![Page 10: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/10.jpg)
> 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
![Page 11: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/11.jpg)
> Syntax Sugarif(a<b){ System.out.println("a é menor");}
puts("a é menor") if(a.<(b))puts "a é menor" if a < b
![Page 12: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/12.jpg)
> 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
![Page 13: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/13.jpg)
> Metaprogamação
* Linguagem dinâmica
* Código gerando código
* Código modificando código
![Page 14: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/14.jpg)
> 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
![Page 15: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/15.jpg)
> Códigos legais* Métodos recebem Hash de parâmetros
* Unless
![Page 16: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/16.jpg)
> O que é Rails? 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. %>
![Page 17: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/17.jpg)
> O inícioDavid Hannson em 2004
Extraído do trabalho dele na 37Signals
![Page 18: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/18.jpg)
> Do que é formado?
> Rails é um meta-framework formado de:– Action Pack;– Action Mailer;– Active Record;– Active Support;– Active Web Services.
![Page 19: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/19.jpg)
> 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
![Page 20: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/20.jpg)
> MVC
> Model> View> Controller
![Page 21: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/21.jpg)
> Filosofias
> Filosofias tem um pé (ou os dois) nas metodologias ágeis e em seus designs
![Page 22: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/22.jpg)
> Filosofias
DDont
R
Y
Repeat
Yourself
![Page 23: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/23.jpg)
> Filosofias
CConvention
O
C
Over
Configuration
![Page 24: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/24.jpg)
> Produtividade> Active RecordDesign Pattern, Framework ORM
c = Celular.newc.nome = "Galaxy S II"c.preco = 2000c.save
=== Em SQL ===
INSERT INTO CELULARES(NOME,PRECO) VALUES ("Galaxy S II", 2000);
![Page 25: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/25.jpg)
> Produtividade> Action Pack
Pacote que gerencia as ações que ocorrem na aplicação, do request ao response
![Page 26: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/26.jpg)
> Action Pack> Action Controller
Gerencia o que ocorre na Controller, quais ações e como elas devem ser tomadas
![Page 27: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/27.jpg)
> Action Pack> Action View
* Gerencia como os dados serão apresentados na tela* .erb, rotas, …
Todos os celulares: <%= @celulares.collect { |c| c.nome }.join ", " %>
![Page 28: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/28.jpg)
> Comandos!!!
![Page 29: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/29.jpg)
> Novo projeto
rails new <nome>
![Page 30: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/30.jpg)
> Scaffold
rails generate scaffold <modelo com atributos>
![Page 31: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/31.jpg)
> Rake
rake <script>
![Page 32: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/32.jpg)
> Quem usa?
> Diversas empresas utilizam o Rails para seus sites
![Page 33: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/33.jpg)
> Basecamp
![Page 34: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/34.jpg)
![Page 35: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/35.jpg)
> github
![Page 36: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/36.jpg)
> Groupon
![Page 37: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/37.jpg)
> E na PT Inovação?
![Page 38: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/38.jpg)
> Wardon
![Page 39: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/39.jpg)
> Dialogus
![Page 40: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/40.jpg)
> Tornar as coisas simples fáceis, e as complexas possíveis
![Page 41: Ruby e Rails](https://reader035.vdocuments.net/reader035/viewer/2022062513/556666fad8b42aa21e8b50b1/html5/thumbnails/41.jpg)
> puts “Muito Obrigado!”
=> nil