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
@L...
luizcarvalho.com/cursos.html!
Instalação
■ sudo apt-get install ruby irb
■ rvm ( http://www.akitaonrails.com/2015/01/28/ruby-e-
rails-no-ubuntu-14-04-lt...
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....
[1] pry(main)> "a".class
=> String
[2] pry(main)> 1.class
=> Fixnum
[3] pry(main)> Fixnum.class
=> Class
[4] pry(main)> Cl...
[5] pry(main)> 1.methods
=> [:to_s,:inspect,:+,:-,:*,:/, ...]
[6] pry(main)> 1.methods.class
=> Array
[7] pry(main)> 1.met...
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 > m...
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
=> B...
Booleanos
2.2.0 :001 > "curso ruby".class # => String
2.2.0 :002 > 'curso ruby'.class # => String
2.2.0 :003 > 'curso n ruby' # => "...
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 ...
2.2.0 :002 > "Luna Moon Rider".reverse # => "rediR nooM anuL"
2.2.0 :003 > "Luna Moon Rider".upcase # => "LUNA MOON RIDER"...
[1] pry(main)> "nome".object_id
=> 26635140
[2] pry(main)> "nome".object_id
=> 26512920
[3] pry(main)> :nome.object_id
=> ...
2.2.0 :017 > CONTANTE = 'Constantes podem ser alteradas'
=> "Constantes podem ser alteradas"
2.2.0 :018 > CONTANTE = 'mas ...
[1] pry(main)> heroes = ['Pudge', 'Invoker', 'Lina']
=> ["Pudge", "Invoker", "Lina"]
[2] pry(main)> heroes[0]
=> "Pudge"
[...
[5] pry(main)> heroes[3] = ['mepoo1', 'mepoo2', 'mepoo3']
=> ["mepoo1", "mepoo2", "mepoo3"]
[6] pry(main)> heroes
=> ["Pud...
[1] pry(main)> old = {:axe=> 'Axe', :abba=> 'Abbadon', :storm=> 'Storm' }
=> {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Stor...
[1] pry(main)> hash = {axe: 'Axe', abba: 'Abbadon', storm: 'Storm' }
=> {:axe=>"Axe", :abba=>"Abbadon", :storm=>"Storm"}
[...
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 'O...
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
un...
Quer saber mais?
● http://ruby-doc.org/
● https://www.codecademy.com/pt/tracks/ruby
● http://why.carlosbrando.com/
● https...
“Ruby on Rails é um framework open-source otimizado para
felicidade programador e produtividade sustentável. Ele
permite e...
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á...
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 .
- na...
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...
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"...
Categorias
rails g scaffold category name description
rake db:migrate
(cadastro)
rails g migration add_category_id_to_item...
Categorias
Item belongs_to :category
Category has_many :items
i = Item.first
i.category
c = Category.first
c.items
i.categ...
Categorias
Categorias
f.collection_select :category_id, Category.all, :id, :name
Strong Params
def to_s
name
end
Obrigado
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Próximos SlideShares
Carregando em…5
×

Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails

265 visualizações

Publicada em

Minicurso apresentado na V Semana Acadêmica na Universidade do Tocantins (UNITINS) do Câmpus Palmas.

Seguem as informações quanto à palestra:
· Data: 22/10/2015
· Horário: 19h às 22h40
· Título: Desenvolvimento na velocidade da luz com Ruby on Rails..
· Local: Câmpus Palmas, 1102 Sul, AV. Teotônio Segurado, Lotes 1/2, Plano Diretor Sul Palmas – TO.


Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
265
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails

  1. 1. Desenvolvimento na velocidade da luz com Ruby on Rails 19h às 22:40 do dia 22 de outubro MC10SI (LABIN I)
  2. 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
  3. 3. luizcarvalho.com/cursos.html!
  4. 4. 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
  5. 5. 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
  6. 6. [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
  7. 7. [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
  8. 8. Métodos
  9. 9. Classes
  10. 10. Classes
  11. 11. 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
  12. 12. Variáveis e Escopos Escopo val local @val de instância @@val de classe $val Global
  13. 13. 2.2.0 :001 > 1.class => Fixnum 2.2.0 :002 > 1.0.class => Float 2.2.0 :003 > 11111111111111111111111111111111111.class => Bignum Números
  14. 14. Booleanos
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. [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
  19. 19. 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
  20. 20. [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
  21. 21. [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
  22. 22. [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
  23. 23. [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
  24. 24. Blocos
  25. 25. Blocos
  26. 26. IF
  27. 27. 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
  28. 28. 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
  29. 29. Quer saber mais? ● http://ruby-doc.org/ ● https://www.codecademy.com/pt/tracks/ruby ● http://why.carlosbrando.com/ ● https://www.ruby-lang.org/pt/
  30. 30. “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
  31. 31. Instalações rails -v gem -v bundle -v sqlite3 --version
  32. 32. Rails
  33. 33. Filosofia do Rails
  34. 34. 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.
  35. 35. PROJETO 30(clientes)x20(basic)x12(meses) = R$ 7200,00
  36. 36. PROJETO rails new easy_menu rails generate scaffold item name description value rake db:create rake db:migrate item . - name - description - value gem ‘pry’
  37. 37. Estrutura
  38. 38. Estrutura
  39. 39. Estrutura
  40. 40. Home rails g controller home home #routes.rb root 'home#home'
  41. 41. Home item = Item.new item.name = "X-Tudo" item.description = "Pão, Queijo, Alface, Salsicha, Hamburger, tomate" item.value = "10,00"
  42. 42. Home Item.all Item.first Item.last Item.find Item.where
  43. 43. Home
  44. 44. Extras <div class="logo"> <%= image_tag 'logo.png' %> </div> http_basic_authenticate_with name: "admin", password: "admin", except: :index
  45. 45. Categorias rails g scaffold category name description rake db:migrate (cadastro) rails g migration add_category_id_to_items category_id:integer
  46. 46. Categorias Item belongs_to :category Category has_many :items i = Item.first i.category c = Category.first c.items i.category = c i.save
  47. 47. Categorias
  48. 48. Categorias f.collection_select :category_id, Category.all, :id, :name Strong Params def to_s name end
  49. 49. Obrigado

×