Ruby & Rails

534 visualizações

Publicada em

O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
534
No SlideShare
0
A partir de incorporações
0
Número de incorporações
90
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Ruby & Rails

  1. 1. Conhecendo Ruby & Rails
  2. 2. Quem sou eu: Sérgio Henrique Miranda Júnior Líder Técnico @ Dito Internet Bacharel em Ciência da Computação pela Universidade FUMEC
  3. 3. Dito Internet: Analytics + Ativação + Social Através da combinação dessas 3 forças a Dito atua com seus clientes com o objetivo de engajar o seu público alvo e maximizar os resultados
  4. 4. Alguns números… Mais de 27.631.682 eventos monitorados Uma média de 4K Requisições Por Minuto (RPM)
  5. 5. Alguns clientes…
  6. 6. Ruby http://www.ruby-lang.org/pt/
  7. 7. “ uma linguagem dinâmica e open source com foco na simplicidade e produtividade ” https://www.ruby-lang.org/en/
  8. 8. Um pouco de história: A linguagem foi lançada em 1995 Desenvolvida por um japonês: Yukihiro “ Matz ” Matsumoto Popularizada em 2006 graças ao Ruby on Rails Influência de Perl, Smalltalk, Eiffel, Ada e Lisp
  9. 9. Tudo é objeto: >> 1500.class => Fixnum >> 1333.even? => false >> “UFLA”.length => 4
  10. 10. Variáveis: Tipagem dinâmica Não precisam ser declaradas Variáveis globais começam com o símbolo $ Variáveis de instância começam com símbolo @ Variáveis de classe começam com o símbolo @@ Variáveis locais começam com a letra minúscula
  11. 11. Variáveis: >> $diretorio = ‘/var' >> faculdade = "UFLA" >> class Pessoa! >> @@quantidade = nil! >> def nome! >> @nome! >> end! >> end
  12. 12. Variáveis: Como faz para validar tipo de variáveis ? Duck typing! Se anda como um pato… faz “quack” como um pato… provavelmente é um pato!
  13. 13. Símbolos: >> name = twitter_api[:screen_name] Basicamente é uma string interna Existe somente uma cópia de cada símbolo na memória Persistem na memória até o programa ser finalizado
  14. 14. Blocos: elementos = [1,2,3,4] elementos.each do |elemento| faca_algo(elemento) end Um bloco de código está sendo passado para o método each. O bloco será executado para cada elemento do array def each index = 0 while index < self.length do yield self[index] index += 1 end end
  15. 15. Blocos: É uma feature muito importante da linguagem. Vários métodos das bibliotecas padrões utilizam blocos em suas implementações File.open("path_to_file") do |arquivo| faca_algo_com(arquivo) end seu arquivo é fechado automaticamente!
  16. 16. Métodos: Definição é realizada pela keyworkd def Ruby suporta valor default e número variável de argumentos def metodo_qualquer(arg1, arg2 = "teste") puts arg1 puts arg2 end metodo_qualquer(1) ! #imprime na saida padrão: 1n “teste” metodo_qualquer(0, “UFLA”) ! #imprime na saida padrão: 0n “UFLA”
  17. 17. Métodos: def add(*numeros) numeros.inject(0) do |soma, numero| soma + numero end end ! add(1) add(1, 2) add(1, 2, 3) add(1, 2, 3, 4)
  18. 18. Classes: Definição é realizada pela keyword class e o construtor é o método initialize class Professor def initialize(nome) @nome = nome end ! def nome @nome end end ! p = Professor.new("Ricardo") p.nome
  19. 19. Classes: Classes em Ruby nunca são fechadas. Você pode alterar a classe que desejar em runtime! class Fixnum def +(another_integer) self * another_integer end end >> 5 + 2 # mesma coisa que -> 5.+(2) => 10 #oooopssss! with great power comes great responsibility!
  20. 20. Classes: Herança é expressada de uma maneira bem simples class Professor < Profissional def metodo_sobrescrito(nome) # super sem nenhum argumento # irá passar todos os argumentos # recebidos para o método # da classe pai resultado = super resultado end end
  21. 21. Módulos: Agrupam métodos, constantes e variáveis de classe Não podem ser instanciados ou utilizados como subclasse module QualquerCoisa def self.algum_metodo ... end ! end ! QualquerCoisa.algum_metodo
  22. 22. Módulos: Podem ser incluídos em classes class Carro include MotorV8 include ABS include AirBag ! def acelerar #... end end
  23. 23. Gem: É o gerenciador de pacotes utilizado pela linguagem Pode conter uma aplicação completa! $ gem install devise! $ gem install mysql2! $ gem install archruby
  24. 24. Ecossistema: Garbage Collector Standard Library String encoding/transcoding Regexp engine Utilitários (ferramentas de debug, formatação de strings) Parser VM
  25. 25. Recapitulando: definição de método class Professor def initialize(nome) if nome.eql? "" @nome = "Fulano" else condicional @nome = nome end end ! def nome @nome end end ! p = Professor.new("Ricardo") p.nome definição de classe variável de instância Constante chamada de método
  26. 26. Rails http://rubyonrails.com.br/
  27. 27. “ é um framework web open source otimizado para a felicidade e produtividade do programador. Faz com que você escreva código bonito favorecendo a convenção sobre configuração ” http://rubyonrails.org/
  28. 28. Framework: “ Conjunto de componentes de software que provêem uma arquitetura e estrutura básicas para o desenvolvimento de uma aplicação. É uma aplicação semi pronta que deve ser extendida e personalizada ”
  29. 29. Filosofia do Rails: Don’t repeat yourself (DRY): é uma sugestão para não repetir o mesmo código em vários lugares Convention over Configuration: o Rails faz suposições sobre o que você quer fazer e como você fará o que deseja Representational State Transfer (REST): é uma maneira de organizar sua aplicação em recursos e verbos padrões utilizados pelo protocolo HTTP
  30. 30. Model View Controller (MVC): apresenta uma visão do model para o usuário View apresenta seleciona & renderiza utiliza, procura e controla Controller Model lógica do negócio, lógica do domínio controla a interação entre o usuário e o app
  31. 31. Sub-componentes do Rails: Action Mailer: é um framework para desenvolver serviços de entrega de emails Action Pack: é um framework para responder e receber requisições web. Fornece mecanismos para rotas e definições de controllers que implementam ações e renderizam o resultado gerado Active Model: fornece várias interfaces que podem ser utilizadas pelo model
  32. 32. Sub-componentes do Rails: Active Record: Conecta classes a tabelas do banco de dados, ou seja, é o ORM do Rails. Active Support: é uma coleção de classes utilitárias e extensões a standard library, que são úteis ao Rails Action View: é um framework para procurar e renderizar templates.
  33. 33. Model View Controller (MVC): Action View apresenta seleciona & renderiza Action Controller utiliza, procura e controla Active Record (& Action Dispatch) (& Active Model)
  34. 34. Exemplo ActiveRecord: class Person < ActiveRecord::Base validates :email, :presence => true validates :surname, :presence => true, :if => "name.nil?" ! has_many :books end ! class Book < ActiveRecord::Base validates :name, :presence => true ! belongs_to :person end ! !p = Person.new(:email => nil, :name => nil, :surname => "Miranda") p.valid? # false puts p.errors # email can't be blank ! p1 = Person.first p1_books = p1.books
  35. 35. Ambientes: Teste: é o ambiente que sua aplicação é executada quando seus testes automatizados estão sendo realizados Desenvolvimento: é o ambiente default quando você está trabalhando na sua aplicação Produção: é o ambiente em que sua aplicação é executada quando ela está no ar, sendo utilizada por usuários reais
  36. 36. Desenvolvimento com testes: Os testes são feitos antes da implementação O Rails já vem preparado para o desenvolvimento orientado a testes Framework largamente utilizado para testes na comunidade Rails: Rspec
  37. 37. Desenvolvimento com testes: describe Teacher do describe "requirements" do it "should have a name" do t = Teacher.new(:name => nil) t.should_not be_valid end end end
  38. 38. Desenvolvimento com testes: Análise Teste Implemente Teste Refatore Teste
  39. 39. Migrations: É uma forma eficiente de alterar a base de dados Mantém o controle das alterações feitas e garante uma estrutura de base idêntica entre os desenvolvedores Facilita modificações na base de produção
  40. 40. Migrations: class CreateTeacher < ActiveRecord::Migration def change create_table :teachers do |t| t.string :name t.string :cpf t.timestamps end end end
  41. 41. Assets pipeline: É um framework para concatenar e reduzir ou comprimir arquivos JavaScript e CSS. Adiciona a possibilidade de escrever os assets em outras linguagens e pre-processadores como: CoffeeScript, Sass e ERB
  42. 42. Assets pipeline:
  43. 43. Assets pipeline:
  44. 44. Rake: É um software para gerenciar tarefas. Similar ao make As tarefas são colocadas em Rakefile, que contêm código Ruby Migrations e testes automatizados são exemplos de tarefas executadas com o Rake
  45. 45. Rake: namespace :namespace_da_sua_task do desc "descricao da sua task" task :nome_da_sua_task => :dependencia_da_sua_task do tarefa_a_ser_executada end end
  46. 46. Scaffold: É um gerador de código que proporciona um desenvolvimento mais rápido $ rails generate scaffold Post nome:string titulo:string conteudo:string
  47. 47. Console: É um Read Eval Print Loop (REPL) utilizado para interagir com a sua aplicação Rails sem precisar utilizar a interface web para isso $ rails c >> Post.all >> Post.first >> p = Post.new(! :nome => “Teste”, ! :titulo => “titulo teste”, ! :conteudo => “Conteudo do post”)
  48. 48. Hello Rails: $ rails new hello_rails $ cd hello_rails $ rails generate controller home index $ vim app/views/home/index.html.erb => <h1> Hello Rails! </h1> $ vim config/routes.rb => root :to => “home#index” $ rails server Abra seu browser e acesse o endereço http://localhost:3000
  49. 49. Hello Rails:
  50. 50. Recapitulando: MVC Componentes Ambientes Testes Migrations Assets pipeline Rake Scaffold
  51. 51. Quem utiliza Rails:
  52. 52. NÃO vire REFÉM do Framework escolha a ferramenta certa para o problema que você está enfrentando
  53. 53. Software só tem valor quando está sendo utilizado
  54. 54. O que vocês precisam… Terminal para executar seus comandos e inicializar o rails server Editor de texto para escrever/editar códigos Browser para visualizar e interagir com a sua aplicação Ruby, para programar sua aplicação Rails, o framework para desenvolver aplicações web
  55. 55. OBRIGADO! twitter: @sergiohenrique sergiohenriquemiranda.com.br

×