SlideShare uma empresa Scribd logo
Desenvolvimento na
velocidade da luz com
Ruby on Rails
19h às 22:40 do dia 22 de outubro
MC10SI (LABIN I)
Quem sou eu?
Luiz Carvalho
7 anos de Ruby on Rails
10 anos como desenvolvedor
Defensoria Pública do Estado do Tocantins
@LuizCarvalho
http://luizcarvalho.com
luizcarvalho.com/cursos.html!
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Instalação
■ sudo apt-get install ruby irb
■ rvm ( http://www.akitaonrails.com/2015/01/28/ruby-e-
rails-no-ubuntu-14-04-lts-trusty-tahr )
> ruby -v
> irb
2.2.0 :001 > puts "hello word!"
hello word!
=> nil
2.2.0 :002 > a = 7
=> 7
2.2.0 :003 > puts a
7
=> nil
2.2.0 :004 > Time.now
=> 2015-10-19 09:09:21 -0300
IRB
[1] pry(main)> "a".class
=> String
[2] pry(main)> 1.class
=> Fixnum
[3] pry(main)> Fixnum.class
=> Class
[4] pry(main)> Class.class
=> Class
Ruby OO
[5] pry(main)> 1.methods
=> [:to_s,:inspect,:+,:-,:*,:/, ...]
[6] pry(main)> 1.methods.class
=> Array
[7] pry(main)> 1.methods.methods
=> [:inspect, :to_s, :to_a, :to_h, :to_ary, :frozen?,...]
Ruby OO
Métodos
Classes
Classes
2.2.0 :001 > minha_variavel = 1 #=> 1
2.2.0 :002 > puts 1 # 1
2.2.0 :003 > minha_variavel.class # => Fixnum
2.2.0 :004 > minha_variavel = "uma string" # => "uma string"
2.2.0 :005 > minha_variavel.class # => String
Variáveis
■ Iniciar com letras minúsculas
■ Tipagem dinâmica
Variáveis e Escopos
Escopo
val local
@val de instância
@@val de classe
$val Global
2.2.0 :001 > 1.class
=> Fixnum
2.2.0 :002 > 1.0.class
=> Float
2.2.0 :003 > 11111111111111111111111111111111111.class
=> Bignum
Números
Booleanos
2.2.0 :001 > "curso ruby".class # => String
2.2.0 :002 > 'curso ruby'.class # => String
2.2.0 :003 > 'curso n ruby' # => "curso n ruby"
2.2.0 :004 > "curso n ruby" # => "curso n ruby"
2.2.0 :005 > puts "curso n ruby"
curso
ruby
=> nil
2.2.0 :006 > puts 'curso n ruby'
curso n ruby
String
2.2.0 :001 > nome = "Luiz"
=> "Luiz"
2.2.0 :002 > puts "Meu nome é #{nome}"
Meu nome é Luiz
=> nil
2.2.0 :003 > puts 'Meu nome é #{nome}'
Meu nome é #{nome}
=> nil
2.2.0 :004 > puts 'Meu nome é '+nome
Meu nome é Luiz
String
2.2.0 :002 > "Luna Moon Rider".reverse # => "rediR nooM anuL"
2.2.0 :003 > "Luna Moon Rider".upcase # => "LUNA MOON RIDER"
2.2.0 :005 > "Luna Moon Rider".ljust(55, "*")
=> "Luna Moon Rider****************************************"
2.2.0 :006 > "Luna Moon Rider"[0,4] # => "Luna"
2.2.0 :007 > "Luna Moon Rider"[5] # => "M"
2.2.0 :008 > "Luna Moon Rider".split(' ') # => ["Luna", "Moon",
"Rider"]
2.2.0 :010 > "Luna Moon Rider".match(/(R.*)/)[0] # => "Rider"
2.2.0 :011 > "Luna Moon Rider".next # => "Luna Moon Rides"
String
[1] pry(main)> "nome".object_id
=> 26635140
[2] pry(main)> "nome".object_id
=> 26512920
[3] pry(main)> :nome.object_id
=> 2433628
[4] pry(main)> :nome.object_id
=> 2433628
Simbolos
2.2.0 :017 > CONTANTE = 'Constantes podem ser alteradas'
=> "Constantes podem ser alteradas"
2.2.0 :018 > CONTANTE = 'mas o Ruby reclama disso'
(irb):18: warning: already initialized constant CONTANTE
(irb):17: warning: previous definition of CONTANTE was here
=> "mas o Ruby reclama disso"
Constantes
[1] pry(main)> heroes = ['Pudge', 'Invoker', 'Lina']
=> ["Pudge", "Invoker", "Lina"]
[2] pry(main)> heroes[0]
=> "Pudge"
[3] pry(main)> heroes[2]
=> "Lina"
[4] pry(main)> heroes[3]
=> nil
Array
[5] pry(main)> heroes[3] = ['mepoo1', 'mepoo2', 'mepoo3']
=> ["mepoo1", "mepoo2", "mepoo3"]
[6] pry(main)> heroes
=> ["Pudge", "Invoker", "Lina", ["mepoo1", "mepoo2", "mepoo3"]]
[7] pry(main)> heroes[4] = 1
=> 1
[8] pry(main)> heroes[5] = Fixnum
=> Fixnum
[9] pry(main)> heroes
=> ["Pudge", "Invoker", "Lina", ["mepoo1", "mepoo2", "mepoo3"], 1, Fixnum]
Array
[1] pry(main)> old = {:axe=> 'Axe', :abba=> 'Abbadon', :storm=> 'Storm' }
=> {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Storm"}
[2] pry(main)> novo = {axe: 'Axe', abba: 'Abbadon', storm: 'Storm' }
=> {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Storm"}
[3] pry(main)> novo = {1: 'Axe', 2: 'Abbadon', 3: 'Storm' }
SyntaxError: unexpected ',', expecting end-of-input
[4] pry(main)> old = {1=> 'Axe', 2=> 'Abbadon', 3=> 'Storm' }
=> {1=>"Axe", 2=>"Abbadon", 3=>"Storm"}
Hash
[1] pry(main)> hash = {axe: 'Axe', abba: 'Abbadon', storm: 'Storm' }
=> {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Storm"}
[2] pry(main)> hash[:abba]
=> "Abbadon"
[3] pry(main)> hash[:axe]
=> "Axe"
[4] pry(main)> hash[:lina]
=> nil
[5] pry(main)> hash[:lina] = "Lina"
=> {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Storm", :lina=>"Lina"}
Hash
Blocos
Blocos
IF
Case When (switch case)
def menu2
puts "Digite um número: "
STDOUT.flush
opcao = gets.chomp.to_i
case opcao
when 1
puts 'Opção 1'
when 2
puts 'Opção 2'
when 3..9
puts 'Opção de 3 a 9'
else
puts 'Opção inválida'
end
end
Operadores lógicos
x = true; y = false
x and y # => false
x && y # => false
x or y # true
x || y # true
x and !y # true
unless(x and y) # ! (x and y)
puts "yeah"
end
Quer saber mais?
● http://ruby-doc.org/
● https://www.codecademy.com/pt/tracks/ruby
● http://why.carlosbrando.com/
● https://www.ruby-lang.org/pt/
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
“Ruby on Rails é um framework open-source otimizado para
felicidade programador e produtividade sustentável. Ele
permite escrever código bonito, favorecendo convenção
sobre configuração.” – Site do Rails
ROR
Instalações
rails -v
gem -v
bundle -v
sqlite3 --version
Rails
Filosofia do Rails
Sub-Componentes do Rails
ActionMailer
Serviço de entrega e recebimento
de e-mails
ActiveSupport
Coleção de classes utilitárias e
extenções à standard library.
ActionView
Framework de localização e
renderização de templates.
ActiveModel
Conjunto de interfaces para o
Modelo
ActionPack
Responsável por receber
requisições web, rotas, controllers,
action e renderização.
ActiveRecord
Conecta as classes às tabelas do
banco de dados. A ORM do Rails.
PROJETO
30(clientes)x20(basic)x12(meses) = R$ 7200,00
PROJETO
rails new easy_menu
rails generate scaffold item name
description value
rake db:create
rake db:migrate
item .
- name
- description
- value
gem ‘pry’
Estrutura
Estrutura
Estrutura
Home
rails g controller home home
#routes.rb
root 'home#home'
Home
item = Item.new
item.name = "X-Tudo"
item.description = "Pão, Queijo, Alface, Salsicha,
Hamburger, tomate"
item.value = "10,00"
Home
Item.all
Item.first
Item.last
Item.find
Item.where
Home
Extras
<div class="logo">
<%= image_tag 'logo.png' %>
</div>
http_basic_authenticate_with name: "admin", password:
"admin", except: :index
Categorias
rails g scaffold category name description
rake db:migrate
(cadastro)
rails g migration add_category_id_to_items
category_id:integer
Categorias
Item belongs_to :category
Category has_many :items
i = Item.first
i.category
c = Category.first
c.items
i.category = c
i.save
Categorias
Categorias
f.collection_select :category_id, Category.all, :id, :name
Strong Params
def to_s
name
end
Obrigado

Mais conteúdo relacionado

PDF
PHP e Mysql - DELETE
PDF
Ecmascript 6, O futuro do Javascript hoje.
PDF
Python e bancos NoSQL
PDF
Resta um java
ODP
Dinamizando Sites Estáticos
PDF
Node.js - #3 - Global Objects - Rodrigo Branas
PDF
Node.js - #4 - Timers - Rodrigo Branas
PDF
Crawling - Coleta de dados na Web com PHP
PHP e Mysql - DELETE
Ecmascript 6, O futuro do Javascript hoje.
Python e bancos NoSQL
Resta um java
Dinamizando Sites Estáticos
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
Crawling - Coleta de dados na Web com PHP

Mais procurados (11)

PDF
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
PPTX
Introdução ao MongoDB
PDF
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
PDF
Python Class
KEY
JavaScript: prototipação, closure e encapsulamento
PDF
[Curso Java Basico] Aula 68: Threads: Interface Runnable
PDF
Apresentação de Ruby com Watir webdriver
PDF
Acessando o MySql com o Python
PDF
Introdução a python módulo b
PDF
Php curl - Coleta de dados na web
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Introdução ao MongoDB
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
Python Class
JavaScript: prototipação, closure e encapsulamento
[Curso Java Basico] Aula 68: Threads: Interface Runnable
Apresentação de Ruby com Watir webdriver
Acessando o MySql com o Python
Introdução a python módulo b
Php curl - Coleta de dados na web
Anúncio

Semelhante a Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails (20)

ODP
Curso Ruby
PDF
Curso de introdução ao ruby
PDF
Aprendendo ruby
PPTX
Curso ruby on rails
PDF
Workshop Ruby on Rails dia 1 ruby-pt
PDF
Crash Course Ruby & Rails
PDF
Ruby para programadores java
PDF
Caelum ruby-on-rails-rr71
PDF
Ruby, Rails e Diversão (Campus Party Brasil 2009)
PDF
Ruby
ODP
Minicurso Ruby on Rails Dextra
PDF
Introdução à programação em Ruby
PDF
Introdução ao Ruby
ODP
PDF
Começando com Ruby - III SEICOM
PDF
Minicurso Ruby on Rails
PDF
Desenvolvimento web com Ruby on Rails (parte 1)
PDF
O que mudou no Ruby 1.9
PDF
Palestra Ruby
PDF
Começando com ruby
Curso Ruby
Curso de introdução ao ruby
Aprendendo ruby
Curso ruby on rails
Workshop Ruby on Rails dia 1 ruby-pt
Crash Course Ruby & Rails
Ruby para programadores java
Caelum ruby-on-rails-rr71
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby
Minicurso Ruby on Rails Dextra
Introdução à programação em Ruby
Introdução ao Ruby
Começando com Ruby - III SEICOM
Minicurso Ruby on Rails
Desenvolvimento web com Ruby on Rails (parte 1)
O que mudou no Ruby 1.9
Palestra Ruby
Começando com ruby
Anúncio

Mais de Luiz Carvalho (15)

PPTX
Palestra Online: Quanto custa um app para sua empresa?
PDF
Comunidade Startup Tocantins 2019
PDF
Chatbots e a nova era das aplicações móveis - Congresso Internacional de CIT
PDF
Chatbots e a revolução digital
PDF
Movimento startup Tocantins [Araguaína]
PDF
Apresentação Parlo Startup Day 2017 Palmas
PDF
Chatbots: A nova era das aplicações móveis
PDF
Minicurso: Como criar chatbots
PPTX
Chatbot - A nova era das aplicações móveis
PPTX
Curso de Introdução ao Android Básico
PDF
Palestra: Movimento Startup Tocantins
PDF
Rails: Porque programar deve ser divertido
PDF
Ruby On Rails: Por que sua Startup deve usar?
PDF
Droido - imprensa
PDF
Palestra Online: Quanto custa um app para sua empresa?
Comunidade Startup Tocantins 2019
Chatbots e a nova era das aplicações móveis - Congresso Internacional de CIT
Chatbots e a revolução digital
Movimento startup Tocantins [Araguaína]
Apresentação Parlo Startup Day 2017 Palmas
Chatbots: A nova era das aplicações móveis
Minicurso: Como criar chatbots
Chatbot - A nova era das aplicações móveis
Curso de Introdução ao Android Básico
Palestra: Movimento Startup Tocantins
Rails: Porque programar deve ser divertido
Ruby On Rails: Por que sua Startup deve usar?
Droido - imprensa

Último (20)

PPT
sistema reprodutor para turmas do oitavo ano
PDF
Ementa 2 semestre PEI Orientação de estudo
PDF
FLUXOGRAMA CLASSE lll - Acesso estritamente proximal.pdf
PDF
DAQUISIÇÃO E DESENVOLVIMENTO DA FALA 12 A 24 MESES
PPT
HISTOLOGIA VEGETAL - tecidos vegetais.ppt
PPTX
Revolução Industrial - Aula Expositiva - 3U4.pptx
PDF
50 anos Hoje - Volume V - 1973 - Manaus Amazonas
PPT
História e Evolução dos Computadores domésticos
PPTX
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.
PPTX
Ciências da Natureza e suas áreas de desenvolvimento
PDF
embriologia_animal_aula_share_2026_semestre
PPTX
Aula 13 - Tópico Frasal - Argumentação.pptx
PPTX
MENDEL - Aula sobre Mendel - Genética EM
PDF
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
PDF
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...
PPTX
Slide_Macronutrientes e Antinutrientes da Dieta Humana.pptx
PPTX
disciplulado curso preparatorio para novos
PPTX
Realismo e Naturalismo: Aluísio Azevedo.
PPTX
brasilcolnia2-101027184359-phpapp02.pptx
PPTX
INDÚSTRIA_ Histórico da industrialização.pptx
sistema reprodutor para turmas do oitavo ano
Ementa 2 semestre PEI Orientação de estudo
FLUXOGRAMA CLASSE lll - Acesso estritamente proximal.pdf
DAQUISIÇÃO E DESENVOLVIMENTO DA FALA 12 A 24 MESES
HISTOLOGIA VEGETAL - tecidos vegetais.ppt
Revolução Industrial - Aula Expositiva - 3U4.pptx
50 anos Hoje - Volume V - 1973 - Manaus Amazonas
História e Evolução dos Computadores domésticos
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.
Ciências da Natureza e suas áreas de desenvolvimento
embriologia_animal_aula_share_2026_semestre
Aula 13 - Tópico Frasal - Argumentação.pptx
MENDEL - Aula sobre Mendel - Genética EM
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...
Slide_Macronutrientes e Antinutrientes da Dieta Humana.pptx
disciplulado curso preparatorio para novos
Realismo e Naturalismo: Aluísio Azevedo.
brasilcolnia2-101027184359-phpapp02.pptx
INDÚSTRIA_ Histórico da industrialização.pptx

Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails

  • 1. Desenvolvimento na velocidade da luz com Ruby on Rails 19h às 22:40 do dia 22 de outubro MC10SI (LABIN I)
  • 2. Quem sou eu? Luiz Carvalho 7 anos de Ruby on Rails 10 anos como desenvolvedor Defensoria Pública do Estado do Tocantins @LuizCarvalho http://luizcarvalho.com
  • 5. Instalação ■ sudo apt-get install ruby irb ■ rvm ( http://www.akitaonrails.com/2015/01/28/ruby-e- rails-no-ubuntu-14-04-lts-trusty-tahr ) > ruby -v > irb
  • 6. 2.2.0 :001 > puts "hello word!" hello word! => nil 2.2.0 :002 > a = 7 => 7 2.2.0 :003 > puts a 7 => nil 2.2.0 :004 > Time.now => 2015-10-19 09:09:21 -0300 IRB
  • 7. [1] pry(main)> "a".class => String [2] pry(main)> 1.class => Fixnum [3] pry(main)> Fixnum.class => Class [4] pry(main)> Class.class => Class Ruby OO
  • 8. [5] pry(main)> 1.methods => [:to_s,:inspect,:+,:-,:*,:/, ...] [6] pry(main)> 1.methods.class => Array [7] pry(main)> 1.methods.methods => [:inspect, :to_s, :to_a, :to_h, :to_ary, :frozen?,...] Ruby OO
  • 12. 2.2.0 :001 > minha_variavel = 1 #=> 1 2.2.0 :002 > puts 1 # 1 2.2.0 :003 > minha_variavel.class # => Fixnum 2.2.0 :004 > minha_variavel = "uma string" # => "uma string" 2.2.0 :005 > minha_variavel.class # => String Variáveis ■ Iniciar com letras minúsculas ■ Tipagem dinâmica
  • 13. Variáveis e Escopos Escopo val local @val de instância @@val de classe $val Global
  • 14. 2.2.0 :001 > 1.class => Fixnum 2.2.0 :002 > 1.0.class => Float 2.2.0 :003 > 11111111111111111111111111111111111.class => Bignum Números
  • 16. 2.2.0 :001 > "curso ruby".class # => String 2.2.0 :002 > 'curso ruby'.class # => String 2.2.0 :003 > 'curso n ruby' # => "curso n ruby" 2.2.0 :004 > "curso n ruby" # => "curso n ruby" 2.2.0 :005 > puts "curso n ruby" curso ruby => nil 2.2.0 :006 > puts 'curso n ruby' curso n ruby String
  • 17. 2.2.0 :001 > nome = "Luiz" => "Luiz" 2.2.0 :002 > puts "Meu nome é #{nome}" Meu nome é Luiz => nil 2.2.0 :003 > puts 'Meu nome é #{nome}' Meu nome é #{nome} => nil 2.2.0 :004 > puts 'Meu nome é '+nome Meu nome é Luiz String
  • 18. 2.2.0 :002 > "Luna Moon Rider".reverse # => "rediR nooM anuL" 2.2.0 :003 > "Luna Moon Rider".upcase # => "LUNA MOON RIDER" 2.2.0 :005 > "Luna Moon Rider".ljust(55, "*") => "Luna Moon Rider****************************************" 2.2.0 :006 > "Luna Moon Rider"[0,4] # => "Luna" 2.2.0 :007 > "Luna Moon Rider"[5] # => "M" 2.2.0 :008 > "Luna Moon Rider".split(' ') # => ["Luna", "Moon", "Rider"] 2.2.0 :010 > "Luna Moon Rider".match(/(R.*)/)[0] # => "Rider" 2.2.0 :011 > "Luna Moon Rider".next # => "Luna Moon Rides" String
  • 19. [1] pry(main)> "nome".object_id => 26635140 [2] pry(main)> "nome".object_id => 26512920 [3] pry(main)> :nome.object_id => 2433628 [4] pry(main)> :nome.object_id => 2433628 Simbolos
  • 20. 2.2.0 :017 > CONTANTE = 'Constantes podem ser alteradas' => "Constantes podem ser alteradas" 2.2.0 :018 > CONTANTE = 'mas o Ruby reclama disso' (irb):18: warning: already initialized constant CONTANTE (irb):17: warning: previous definition of CONTANTE was here => "mas o Ruby reclama disso" Constantes
  • 21. [1] pry(main)> heroes = ['Pudge', 'Invoker', 'Lina'] => ["Pudge", "Invoker", "Lina"] [2] pry(main)> heroes[0] => "Pudge" [3] pry(main)> heroes[2] => "Lina" [4] pry(main)> heroes[3] => nil Array
  • 22. [5] pry(main)> heroes[3] = ['mepoo1', 'mepoo2', 'mepoo3'] => ["mepoo1", "mepoo2", "mepoo3"] [6] pry(main)> heroes => ["Pudge", "Invoker", "Lina", ["mepoo1", "mepoo2", "mepoo3"]] [7] pry(main)> heroes[4] = 1 => 1 [8] pry(main)> heroes[5] = Fixnum => Fixnum [9] pry(main)> heroes => ["Pudge", "Invoker", "Lina", ["mepoo1", "mepoo2", "mepoo3"], 1, Fixnum] Array
  • 23. [1] pry(main)> old = {:axe=> 'Axe', :abba=> 'Abbadon', :storm=> 'Storm' } => {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Storm"} [2] pry(main)> novo = {axe: 'Axe', abba: 'Abbadon', storm: 'Storm' } => {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Storm"} [3] pry(main)> novo = {1: 'Axe', 2: 'Abbadon', 3: 'Storm' } SyntaxError: unexpected ',', expecting end-of-input [4] pry(main)> old = {1=> 'Axe', 2=> 'Abbadon', 3=> 'Storm' } => {1=>"Axe", 2=>"Abbadon", 3=>"Storm"} Hash
  • 24. [1] pry(main)> hash = {axe: 'Axe', abba: 'Abbadon', storm: 'Storm' } => {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Storm"} [2] pry(main)> hash[:abba] => "Abbadon" [3] pry(main)> hash[:axe] => "Axe" [4] pry(main)> hash[:lina] => nil [5] pry(main)> hash[:lina] = "Lina" => {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Storm", :lina=>"Lina"} Hash
  • 27. IF
  • 28. Case When (switch case) def menu2 puts "Digite um número: " STDOUT.flush opcao = gets.chomp.to_i case opcao when 1 puts 'Opção 1' when 2 puts 'Opção 2' when 3..9 puts 'Opção de 3 a 9' else puts 'Opção inválida' end end
  • 29. Operadores lógicos x = true; y = false x and y # => false x && y # => false x or y # true x || y # true x and !y # true unless(x and y) # ! (x and y) puts "yeah" end
  • 30. Quer saber mais? ● http://ruby-doc.org/ ● https://www.codecademy.com/pt/tracks/ruby ● http://why.carlosbrando.com/ ● https://www.ruby-lang.org/pt/
  • 32. “Ruby on Rails é um framework open-source otimizado para felicidade programador e produtividade sustentável. Ele permite escrever código bonito, favorecendo convenção sobre configuração.” – Site do Rails ROR
  • 33. Instalações rails -v gem -v bundle -v sqlite3 --version
  • 34. Rails
  • 36. Sub-Componentes do Rails ActionMailer Serviço de entrega e recebimento de e-mails ActiveSupport Coleção de classes utilitárias e extenções à standard library. ActionView Framework de localização e renderização de templates. ActiveModel Conjunto de interfaces para o Modelo ActionPack Responsável por receber requisições web, rotas, controllers, action e renderização. ActiveRecord Conecta as classes às tabelas do banco de dados. A ORM do Rails.
  • 38. PROJETO rails new easy_menu rails generate scaffold item name description value rake db:create rake db:migrate item . - name - description - value gem ‘pry’
  • 42. Home rails g controller home home #routes.rb root 'home#home'
  • 43. Home item = Item.new item.name = "X-Tudo" item.description = "Pão, Queijo, Alface, Salsicha, Hamburger, tomate" item.value = "10,00"
  • 45. Home
  • 46. Extras <div class="logo"> <%= image_tag 'logo.png' %> </div> http_basic_authenticate_with name: "admin", password: "admin", except: :index
  • 47. Categorias rails g scaffold category name description rake db:migrate (cadastro) rails g migration add_category_id_to_items category_id:integer
  • 48. Categorias Item belongs_to :category Category has_many :items i = Item.first i.category c = Category.first c.items i.category = c i.save
  • 50. Categorias f.collection_select :category_id, Category.all, :id, :name Strong Params def to_s name end