SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
Desenvolvimento Web
com Ruby on Rails
Nuno Silva
@nunosilva800
www.whitesmith.co
● Criação
● Objectivos principais
● Inspirada em Perl,
Smalltalk, Eiffel, Ada
e Lisp
RUBY
Tudo é um objecto. Até os tipos primitivos!
irb> 3.times { puts "Eu amo Ruby <3" }
Eu amo Ruby <3
Eu amo Ruby <3
Eu amo Ruby <3
irb> nil.inspect
=> "nil"
irb> nil.to_s
=> ""
irb> nil.to_i
=> 0
irb> nil.nil?
=> true
irb> 3.14159.negative?
=> false
irb> 1_500_000 == 1500000
=> true
RUBY
Tudo é um objecto. Até os tipos primitivos!
irb> [1,2,3].max
=> 3
irb> soma = 0
irb> [1,2,3].each { |n| soma += n }
irb> soma
=> 6
irb> [1,2,3].inject { |acc, n| acc += n }
=> 6
irb> [1,2,3].inject(&:+)
=> 6
RUBY
Tudo é um objecto. Até os tipos primitivos!
irb> my_hash = {a: 1, b: 'foo', c: [1,2,3]}
=> {:a=>1, :b=>"foo", :c=>[1, 2, 3]}
irb> my_hash[:b]
=> "foo"
irb> my_hash.values
=> [1, "foo", [1, 2, 3]]
RUBY
Semelhanças
● Garbage Collector
● Tipagem forte
○ Ruby: dinâmica / Java: estática
● Public, Private, Protected methods
DO JAVA PARA O RUBY
Diferenças
● Sem compilação (interpretado)
● end ao invés de colchetes {}
● require ao invés de import
● Sem declarações de tipos a = [1,2,3]vs int[] a = {1,2,3};
● foo = Foo.new("hi") ao invés de Foo foo = new Foo("hi")
● Construtor é sempre chamado de initialize
● Variáveis de instância são todas privadas
DO JAVA PARA O RUBY
class Animal
def say
nil
end
end
class Dog < Animal
def say
'Woff'
end
end
class Fox < Animal
# what does the fox say?
end
> Animal.new.say
=> nil
> Dog.new.say
=> "Woff"
> Fox.new.say
=> nil
RUBY
class Counter
def initialize
@value = 0
end
def add
@value += 1
end
def current
@value
end
end
> counter = Counter.new
=> #<Counter:0x000000034ca448
@value=0>
> counter.current
=> 0
> counter.add
=> 1
> counter.current
=> 1
> counter.value
NoMethodError: undefined method `value'
> counter.@value
SyntaxError:
RUBY
● Matz’s Ruby Interpreter (MRI) / CRuby
○ Oficial, implementado em C
○ Acesso a bibliotecas escritas em C
● JRuby
○ Implementado em Java, roda na JVM
○ Acesso a bibliotecas escritas em Java
● RubyMotion
○ Implementado em Objective-C / Cocoa
○ Gera binários nativos para iOS, OS X e Android
● mruby
○ Versão embutível do MRI, para sistemas embarcados
○ Ideal para rodar Ruby em Raspberry Pi, IoTs, etc.
Interpretadores Ruby
RUBY
Rubygems.org
$ gem install bundler
Fetching: bundler-1.13.5.gem (100%)
Successfully installed bundler-1.13.5
Bundler.io
source 'https://rubygems.org'
gem 'rails'
gem 'jquery-rails', '~> 3.1.3'
$ bundle install
Fetching gem metadata from https://rubygems.org/.....
RUBY
O que é o Ruby on Rails?
● Framework para desenvolvimento Web
● Open source
● Full-stack: do banco de dados ao cliente (browser)
● RESTful
● Valoriza a convenção ao invés da configuração
RUBY ON RAILS
$ gem install rails
$ rails new semana-academica --database=postgresql
$ cd semana-academica
├── app
├── bin
├── config
├── db
├── Gemfile
├── Gemfile.lock
├── lib
├── log
├── public
├── test
└── vendor
app/
├── assets
├── channels
├── controllers
├── helpers
├── jobs
├── mailers
├── models
└── views
RUBY ON RAILS
$ rails db:create
$ rails server
$ xdg-open http://localhost:3000
RUBY ON RAILS
$ rails generate scaffold post title:string body:text
invoke active_record
create db/migrate/20161017203634_create_posts.rb
create app/models/post.rb
invoke resource_route
route resources :posts
invoke scaffold_controller
create app/controllers/posts_controller.rb
invoke erb
create app/views/posts
create app/views/posts/index.html.erb
create app/views/posts/edit.html.erb
create app/views/posts/show.html.erb
create app/views/posts/new.html.erb
create app/views/posts/_form.html.erb
invoke test_unit
create test/models/post_test.rb
create test/fixtures/posts.yml
create test/controllers/posts_controller_test.rb
RUBY ON RAILS
$ rails db:migrate
$ rails server
Demo Time!
RUBY ON RAILS
MVC - Camada de dados + modelos
class CreatePosts < ActiveRecord::Migration[5.0]
def change
create_table :posts do |t|
t.string :title
t.text :body
t.timestamps
end
end
end
class Post < ApplicationRecord
end
RUBY ON RAILS
MVC - Camada de controladores + rotas
$ rails routes
Prefix Verb URI Pattern Controller#Action
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format) posts#update
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy
Rails.application.routes.draw do
resources :posts
end
RUBY ON RAILS
MVC - Camada de controladores + rotas
class PostsController < ApplicationController
# GET /posts
# GET /posts.json
def index
@posts = Post.all
end
# GET /posts/1
# GET /posts/1.json
def show
@post = Post.find(params[:id])
end
# GET /posts/new
def new
@post = Post.new
end
RUBY ON RAILS
MVC - Camada de visão
<p>
<strong>Title:</strong>
<%= @post.title %>
</p>
<p>
<strong>Body:</strong>
<%= @post.body %>
</p>
<%= link_to 'Edit', edit_post_path(@post) %> |
<%= link_to 'Back', posts_path %>
$ cat semana-academica/app/views/posts/show.html.erb
RUBY ON RAILS
MVC - Camada de visão
json.partial! "posts/post", post: @post
json.extract! post, :id, :title, :body, :created_at, :updated_at
json.url post_url(post, format: :json)
$ curl http://localhost:3000/posts/1.json
{"id":1,"title":"Olá Unitins","body":"Semana acadêmica
o/","created_at":"2016-10-17T21:20:05.247Z","updated_at":"2016-1
0-17T21:20:05.247Z","url":"http://localhost:3000/posts/1.json"}
$ cat semana-academica/app/views/posts/show.json.jbuilder
$ cat semana-academica/app/views/posts/_post.json.jbuilder
RUBY ON RAILS
$ rails console
> Post.count
(0.2ms) SELECT COUNT(*) FROM "posts"
=> 1
> Post.first
Post Load (0.6ms) SELECT "posts".* FROM "posts" ORDER BY
"posts"."id" ASC LIMIT $1 [["LIMIT", 1]]
=> #<Post id: 1, title: "Olá Unitins", body: "Semana acadêmica
o/",...>
> Post.where(created_at: (Date.today - 1.day)..(Date.today + 1.day)).count
(0.8ms) SELECT COUNT(*) FROM "posts" WHERE ("posts"."created_at" BETWEEN $1
AND $2) [["created_at", Sun, 16 Oct 2016], ["created_at", Tue, 18 Oct 2016]]
=> 1
RUBY ON RAILS
E como
é lá
fora?
Construído com Ruby on Rails até ~ 2011.
Trocaram para Scala devido à enorme demanda.
Obrigado!
Nuno Silva
@nunosilva800
www.whitesmith.co
Do Java para Ruby
Performance
Ruby 2.3 ~ 4% mais lento que Java 8
https://github.com/famzah/langs-performance
http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=yarv&lang2=java

Contenu connexe

Tendances

Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
JavaScript básico e ReactJS
JavaScript básico e ReactJSJavaScript básico e ReactJS
JavaScript básico e ReactJSJuliana Cerqueira
 
WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011Leonardo Balter
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Daniel Lopes
 
Introducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsIntroducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsKaton Agência Digital
 
Introdução ao Ruby on Rails
Introdução ao Ruby on RailsIntrodução ao Ruby on Rails
Introdução ao Ruby on RailsJuan Maiz
 
Ruby para programadores PHP
Ruby para programadores PHPRuby para programadores PHP
Ruby para programadores PHPJuan Maiz
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Daniel Lopes
 
Javascript The good, bad and ugly parts
Javascript The good, bad and ugly partsJavascript The good, bad and ugly parts
Javascript The good, bad and ugly partsFabian Carlos
 

Tendances (12)

Palestra Ruby
Palestra RubyPalestra Ruby
Palestra Ruby
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
JavaScript básico e ReactJS
JavaScript básico e ReactJSJavaScript básico e ReactJS
JavaScript básico e ReactJS
 
WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)
 
Introducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsIntroducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com Rails
 
Introdução ao Ruby on Rails
Introdução ao Ruby on RailsIntrodução ao Ruby on Rails
Introdução ao Ruby on Rails
 
Ruby para programadores PHP
Ruby para programadores PHPRuby para programadores PHP
Ruby para programadores PHP
 
SEA Rails na pratica
SEA Rails na praticaSEA Rails na pratica
SEA Rails na pratica
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
 
Javascript The good, bad and ugly parts
Javascript The good, bad and ugly partsJavascript The good, bad and ugly parts
Javascript The good, bad and ugly parts
 

Similaire à Desenvolvimento Web com Ruby on Rails

Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Joao Lucas Santana
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Railsoverduka
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Emerson Macedo
 
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 RailsEsta 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 Railsismaelstahelin
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on RailsCJR, UnB
 
Dando os primeiros passos com rails
Dando os primeiros passos com railsDando os primeiros passos com rails
Dando os primeiros passos com railsMarcos Sousa
 
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPRTecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPRAlessandro Dias
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsThiago Cifani
 
Introdução ao Ruby
Introdução ao RubyIntrodução ao Ruby
Introdução ao RubyMilton Moura
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xRodrigo Urubatan
 

Similaire à Desenvolvimento Web com Ruby on Rails (20)

Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Rails
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
 
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 RailsEsta 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
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
 
RoR na prática
RoR na práticaRoR na prática
RoR na prática
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on Rails
 
Dando os primeiros passos com rails
Dando os primeiros passos com railsDando os primeiros passos com rails
Dando os primeiros passos com rails
 
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPRTecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Oficial
OficialOficial
Oficial
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on Rails
 
Introdução ao Ruby
Introdução ao RubyIntrodução ao Ruby
Introdução ao Ruby
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.x
 
Ruby e Rails
Ruby e RailsRuby e Rails
Ruby e Rails
 

Desenvolvimento Web com Ruby on Rails

  • 1. Desenvolvimento Web com Ruby on Rails Nuno Silva @nunosilva800 www.whitesmith.co
  • 2.
  • 3.
  • 4. ● Criação ● Objectivos principais ● Inspirada em Perl, Smalltalk, Eiffel, Ada e Lisp RUBY
  • 5. Tudo é um objecto. Até os tipos primitivos! irb> 3.times { puts "Eu amo Ruby <3" } Eu amo Ruby <3 Eu amo Ruby <3 Eu amo Ruby <3 irb> nil.inspect => "nil" irb> nil.to_s => "" irb> nil.to_i => 0 irb> nil.nil? => true irb> 3.14159.negative? => false irb> 1_500_000 == 1500000 => true RUBY
  • 6. Tudo é um objecto. Até os tipos primitivos! irb> [1,2,3].max => 3 irb> soma = 0 irb> [1,2,3].each { |n| soma += n } irb> soma => 6 irb> [1,2,3].inject { |acc, n| acc += n } => 6 irb> [1,2,3].inject(&:+) => 6 RUBY
  • 7. Tudo é um objecto. Até os tipos primitivos! irb> my_hash = {a: 1, b: 'foo', c: [1,2,3]} => {:a=>1, :b=>"foo", :c=>[1, 2, 3]} irb> my_hash[:b] => "foo" irb> my_hash.values => [1, "foo", [1, 2, 3]] RUBY
  • 8. Semelhanças ● Garbage Collector ● Tipagem forte ○ Ruby: dinâmica / Java: estática ● Public, Private, Protected methods DO JAVA PARA O RUBY
  • 9. Diferenças ● Sem compilação (interpretado) ● end ao invés de colchetes {} ● require ao invés de import ● Sem declarações de tipos a = [1,2,3]vs int[] a = {1,2,3}; ● foo = Foo.new("hi") ao invés de Foo foo = new Foo("hi") ● Construtor é sempre chamado de initialize ● Variáveis de instância são todas privadas DO JAVA PARA O RUBY
  • 10. class Animal def say nil end end class Dog < Animal def say 'Woff' end end class Fox < Animal # what does the fox say? end > Animal.new.say => nil > Dog.new.say => "Woff" > Fox.new.say => nil RUBY
  • 11. class Counter def initialize @value = 0 end def add @value += 1 end def current @value end end > counter = Counter.new => #<Counter:0x000000034ca448 @value=0> > counter.current => 0 > counter.add => 1 > counter.current => 1 > counter.value NoMethodError: undefined method `value' > counter.@value SyntaxError: RUBY
  • 12. ● Matz’s Ruby Interpreter (MRI) / CRuby ○ Oficial, implementado em C ○ Acesso a bibliotecas escritas em C ● JRuby ○ Implementado em Java, roda na JVM ○ Acesso a bibliotecas escritas em Java ● RubyMotion ○ Implementado em Objective-C / Cocoa ○ Gera binários nativos para iOS, OS X e Android ● mruby ○ Versão embutível do MRI, para sistemas embarcados ○ Ideal para rodar Ruby em Raspberry Pi, IoTs, etc. Interpretadores Ruby RUBY
  • 13. Rubygems.org $ gem install bundler Fetching: bundler-1.13.5.gem (100%) Successfully installed bundler-1.13.5 Bundler.io source 'https://rubygems.org' gem 'rails' gem 'jquery-rails', '~> 3.1.3' $ bundle install Fetching gem metadata from https://rubygems.org/..... RUBY
  • 14.
  • 15. O que é o Ruby on Rails? ● Framework para desenvolvimento Web ● Open source ● Full-stack: do banco de dados ao cliente (browser) ● RESTful ● Valoriza a convenção ao invés da configuração RUBY ON RAILS
  • 16. $ gem install rails $ rails new semana-academica --database=postgresql $ cd semana-academica ├── app ├── bin ├── config ├── db ├── Gemfile ├── Gemfile.lock ├── lib ├── log ├── public ├── test └── vendor app/ ├── assets ├── channels ├── controllers ├── helpers ├── jobs ├── mailers ├── models └── views RUBY ON RAILS
  • 17. $ rails db:create $ rails server $ xdg-open http://localhost:3000 RUBY ON RAILS
  • 18. $ rails generate scaffold post title:string body:text invoke active_record create db/migrate/20161017203634_create_posts.rb create app/models/post.rb invoke resource_route route resources :posts invoke scaffold_controller create app/controllers/posts_controller.rb invoke erb create app/views/posts create app/views/posts/index.html.erb create app/views/posts/edit.html.erb create app/views/posts/show.html.erb create app/views/posts/new.html.erb create app/views/posts/_form.html.erb invoke test_unit create test/models/post_test.rb create test/fixtures/posts.yml create test/controllers/posts_controller_test.rb RUBY ON RAILS
  • 19. $ rails db:migrate $ rails server Demo Time! RUBY ON RAILS
  • 20. MVC - Camada de dados + modelos class CreatePosts < ActiveRecord::Migration[5.0] def change create_table :posts do |t| t.string :title t.text :body t.timestamps end end end class Post < ApplicationRecord end RUBY ON RAILS
  • 21. MVC - Camada de controladores + rotas $ rails routes Prefix Verb URI Pattern Controller#Action posts GET /posts(.:format) posts#index POST /posts(.:format) posts#create new_post GET /posts/new(.:format) posts#new edit_post GET /posts/:id/edit(.:format) posts#edit post GET /posts/:id(.:format) posts#show PATCH /posts/:id(.:format) posts#update PUT /posts/:id(.:format) posts#update DELETE /posts/:id(.:format) posts#destroy Rails.application.routes.draw do resources :posts end RUBY ON RAILS
  • 22. MVC - Camada de controladores + rotas class PostsController < ApplicationController # GET /posts # GET /posts.json def index @posts = Post.all end # GET /posts/1 # GET /posts/1.json def show @post = Post.find(params[:id]) end # GET /posts/new def new @post = Post.new end RUBY ON RAILS
  • 23. MVC - Camada de visão <p> <strong>Title:</strong> <%= @post.title %> </p> <p> <strong>Body:</strong> <%= @post.body %> </p> <%= link_to 'Edit', edit_post_path(@post) %> | <%= link_to 'Back', posts_path %> $ cat semana-academica/app/views/posts/show.html.erb RUBY ON RAILS
  • 24. MVC - Camada de visão json.partial! "posts/post", post: @post json.extract! post, :id, :title, :body, :created_at, :updated_at json.url post_url(post, format: :json) $ curl http://localhost:3000/posts/1.json {"id":1,"title":"Olá Unitins","body":"Semana acadêmica o/","created_at":"2016-10-17T21:20:05.247Z","updated_at":"2016-1 0-17T21:20:05.247Z","url":"http://localhost:3000/posts/1.json"} $ cat semana-academica/app/views/posts/show.json.jbuilder $ cat semana-academica/app/views/posts/_post.json.jbuilder RUBY ON RAILS
  • 25. $ rails console > Post.count (0.2ms) SELECT COUNT(*) FROM "posts" => 1 > Post.first Post Load (0.6ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" ASC LIMIT $1 [["LIMIT", 1]] => #<Post id: 1, title: "Olá Unitins", body: "Semana acadêmica o/",...> > Post.where(created_at: (Date.today - 1.day)..(Date.today + 1.day)).count (0.8ms) SELECT COUNT(*) FROM "posts" WHERE ("posts"."created_at" BETWEEN $1 AND $2) [["created_at", Sun, 16 Oct 2016], ["created_at", Tue, 18 Oct 2016]] => 1 RUBY ON RAILS
  • 27.
  • 28. Construído com Ruby on Rails até ~ 2011. Trocaram para Scala devido à enorme demanda.
  • 30. Do Java para Ruby Performance Ruby 2.3 ~ 4% mais lento que Java 8 https://github.com/famzah/langs-performance http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=yarv&lang2=java