Ruby & Rails

  • Published on
    27-Jun-2015

  • View
    192

  • Download
    2

Embed Size (px)

DESCRIPTION

O mercado de internet evolui em uma velocidade muito rpida, se no formos capazes de acompanhar as evolues e apresentar inovaes, ficamos para trs. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessria!

Transcript

<ul><li> 1. ConhecendoRuby&amp;Rails</li></ul> <p> 2. Quem sou eu:Srgio Henrique Miranda JniorLder Tcnico @ Dito InternetBacharel em Cincia da Computao pelaUniversidade FUMEC 3. Dito Internet:Analytics + Ativao + SocialAtravs da combinao dessas 3 forasa Dito atua com seus clientes com o objetivode engajar o seu pblico alvo e maximizar os resultados 4. Alguns nmerosMais de 27.631.682 eventos monitoradosUma mdia de 4K Requisies Por Minuto (RPM) 5. Alguns clientes 6. Ruby http://www.ruby-lang.org/pt/ 7. uma linguagem dinmicae open source com foco nasimplicidade e produtividade https://www.ruby-lang.org/en/ 8. Um pouco de histria:A linguagem foi lanada em 1995Desenvolvida por um japons: Yukihiro Matz MatsumotoPopularizada em 2006 graas ao Ruby on RailsInfluncia de Perl, Smalltalk, Eiffel, Ada e Lisp 9. Tudo objeto:&gt;&gt; 1500.class=&gt; Fixnum&gt;&gt; 1333.even?=&gt; false&gt;&gt; UFLA.length=&gt; 4 10. Variveis:Tipagem dinmicaNo precisam ser declaradasVariveis globais comeam com o smbolo $Variveis de instncia comeam com smbolo @Variveis de classe comeam com o smbolo @@Variveis locais comeam com a letra minscula 11. Variveis:&gt;&gt; $diretorio = /var'&gt;&gt; faculdade = "UFLA"&gt;&gt; class Pessoa!&gt;&gt; @@quantidade = nil!&gt;&gt; def nome!&gt;&gt; @nome!&gt;&gt; end!&gt;&gt; end 12. Variveis:Como faz para validar tipo de variveis ?Duck typing!Se anda como um patofaz quack como um patoprovavelmente um pato! 13. Smbolos:&gt;&gt; name = twitter_api[:screen_name]Basicamente uma string internaExiste somente uma cpia de cada smbolo na memriaPersistem na memria at o programa ser finalizado 14. Blocos:elementos = [1,2,3,4]elementos.each do |elemento|faca_algo(elemento)endUm bloco de cdigo est sendo passado para o mtodoeach. O bloco ser executado para cada elemento do arraydef eachindex = 0while index &lt; self.length doyield self[index]index += 1endend 15. Blocos: uma feature muito importante da linguagem.Vrios mtodos das bibliotecas padres utilizam blocosem suas implementaesFile.open("path_to_file") do |arquivo|faca_algo_com(arquivo)endseu arquivo fechado automaticamente! 16. Mtodos:Definio realizada pela keyworkd defRuby suporta valor default e nmero varivel de argumentosdef metodo_qualquer(arg1, arg2 = "teste")puts arg1puts arg2endmetodo_qualquer(1) !#imprime na saida padro: 1n testemetodo_qualquer(0, UFLA) !#imprime na saida padro: 0n UFLA 17. Mtodos:def add(*numeros)numeros.inject(0) do|soma, numero| soma + numeroendend!add(1)add(1, 2)add(1, 2, 3)add(1, 2, 3, 4) 18. Classes:Definio realizada pela keyword class e o construtor o mtodo initializeclass Professordef initialize(nome)@nome = nomeend!def nome@nomeendend!p = Professor.new("Ricardo")p.nome 19. Classes:Classes em Ruby nunca so fechadas. Voc pode alterar a classeque desejar em runtime!class Fixnumdef +(another_integer)self * another_integerendend&gt;&gt; 5 + 2 # mesma coisa que -&gt; 5.+(2)=&gt; 10 #oooopssss! with great power comes greatresponsibility! 20. Classes:Herana expressada de uma maneira bem simplesclass Professor &lt; Profissionaldef metodo_sobrescrito(nome)# super sem nenhum argumento# ir passar todos os argumentos# recebidos para o mtodo# da classe pairesultado = superresultadoendend 21. Mdulos:Agrupam mtodos, constantes e variveis de classeNo podem ser instanciados ou utilizados como subclassemodule QualquerCoisadef self.algum_metodo...end!end!QualquerCoisa.algum_metodo 22. Mdulos:Podem ser includos em classesclass Carroinclude MotorV8include ABSinclude AirBag!def acelerar#...endend 23. Gem: o gerenciador de pacotes utilizado pela linguagemPode conter uma aplicao completa!$ gem install devise!$ gem install mysql2!$ gem install archruby 24. Ecossistema:Garbage CollectorStandard LibraryString encoding/transcodingRegexp engineUtilitrios (ferramentas de debug, formatao de strings)ParserVM 25. Recapitulando:definio de mtodoclass Professordef initialize(nome)if nome.eql? ""@nome = "Fulano"elsecondicional@nome = nomeendend!def nome@nomeendend!p = Professor.new("Ricardo")p.nomedefinio de classevarivel de instnciaConstantechamada demtodo 26. Rails http://rubyonrails.com.br/ 27. um framework web open sourceotimizado para a felicidade e produtividadedo programador. Faz com que voc escrevacdigo bonito favorecendo a convenosobre configurao http://rubyonrails.org/ 28. Framework: Conjunto de componentes de softwareque provem uma arquitetura e estruturabsicas para o desenvolvimento de umaaplicao. uma aplicao semi pronta quedeve ser extendida e personalizada 29. Filosofia do Rails:Dont repeat yourself (DRY): uma sugesto para no repetir omesmo cdigo em vrios lugaresConvention over Configuration: o Rails faz suposies sobre oque voc quer fazer e como voc far o que desejaRepresentational State Transfer (REST): uma maneira deorganizar sua aplicao em recursos e verbos padres utilizadospelo protocolo HTTP 30. Model View Controller (MVC):apresenta uma viso domodel para o usurioViewapresentaseleciona &amp; renderizautiliza, procura e controlaController Modellgica do negcio,lgica do domniocontrola a interaoentre o usurio e o app 31. Sub-componentes do Rails:Action Mailer: um framework para desenvolver servios deentrega de emailsAction Pack: um framework para responder e receberrequisies web. Fornece mecanismos para rotas e definiesde controllers que implementam aes e renderizam oresultado geradoActive Model: fornece vrias interfaces que podem serutilizadas pelo model 32. Sub-componentes do Rails:Active Record: Conecta classes a tabelas do banco de dados,ou seja, o ORM do Rails.Active Support: uma coleo de classes utilitrias eextenses a standard library, que so teis ao RailsAction View: um framework para procurar e renderizartemplates. 33. Model View Controller (MVC):Action Viewapresentaseleciona &amp; renderizaAction Controller utiliza, procura e controlaActive Record(&amp; Action Dispatch) (&amp; Active Model) 34. Exemplo ActiveRecord:class Person &lt; ActiveRecord::Basevalidates :email, :presence =&gt; truevalidates :surname, :presence =&gt; true, :if =&gt; "name.nil?"!has_many :booksend!class Book &lt; ActiveRecord::Basevalidates :name, :presence =&gt; true!belongs_to :personend!!p = Person.new(:email =&gt; nil, :name =&gt; nil, :surname =&gt; "Miranda")p.valid? # falseputs p.errors # email can't be blank!p1 = Person.firstp1_books = p1.books 35. Ambientes:Teste: o ambiente que sua aplicao executada quando seustestes automatizados esto sendo realizadosDesenvolvimento: o ambiente default quando voc esttrabalhando na sua aplicaoProduo: o ambiente em que sua aplicao executadaquando ela est no ar, sendo utilizada por usurios reais 36. Desenvolvimento com testes:Os testes so feitos antes da implementaoO Rails j vem preparado para o desenvolvimento orientadoa testesFramework largamente utilizado para testes na comunidadeRails: Rspec 37. Desenvolvimento com testes:describe Teacher dodescribe "requirements" doit "should have a name" dot = Teacher.new(:name =&gt; nil)t.should_not be_validendendend 38. Desenvolvimento com testes:Anlise Teste ImplementeTeste Refatore Teste 39. Migrations: uma forma eficiente de alterar a base de dadosMantm o controle das alteraes feitas e garante umaestrutura de base idntica entre os desenvolvedoresFacilita modificaes na base de produo 40. Migrations:class CreateTeacher &lt; ActiveRecord::Migrationdef changecreate_table :teachers do |t|t.string :namet.string :cpft.timestampsendendend 41. Assets pipeline: um framework para concatenar e reduzir ou comprimirarquivos JavaScript e CSS.Adiciona a possibilidade de escrever os assets em outraslinguagens e pre-processadores como: CoffeeScript, Sass eERB 42. Assets pipeline: 43. Assets pipeline: 44. Rake: um software para gerenciar tarefas. Similar ao makeAs tarefas so colocadas em Rakefile, que contm cdigo RubyMigrations e testes automatizados so exemplos de tarefasexecutadas com o Rake 45. Rake:namespace :namespace_da_sua_task dodesc "descricao da sua task"task :nome_da_sua_task =&gt; :dependencia_da_sua_task dotarefa_a_ser_executadaendend 46. Scaffold: um gerador de cdigo que proporciona um desenvolvimentomais rpido$ rails generate scaffold Post nome:string titulo:stringconteudo:string 47. Console: um Read Eval Print Loop (REPL) utilizado para interagir coma sua aplicao Rails sem precisar utilizar a interface webpara isso$ rails c&gt;&gt; Post.all&gt;&gt; Post.first&gt;&gt; p = Post.new(!:nome =&gt; Teste, !:titulo =&gt; titulo teste, !:conteudo =&gt; Conteudo do post) 48. Hello Rails:$ rails new hello_rails$ cd hello_rails$ rails generate controller home index$ vim app/views/home/index.html.erb =&gt; Hello Rails! $ vim config/routes.rb =&gt; root :to =&gt; home#index$ rails serverAbra seu browser e acesse o endereo http://localhost:3000 49. Hello Rails: 50. Recapitulando:MVCComponentesAmbientesTestesMigrationsAssets pipelineRakeScaffold 51. Quem utiliza Rails: 52. NO vire REFMdo Frameworkescolha a ferramenta certa para oproblema que voc est enfrentando 53. Software s temvalor quando estsendo utilizado 54. O que vocs precisamTerminal para executar seus comandos e inicializaro rails serverEditor de texto para escrever/editar cdigosBrowser para visualizar e interagir com a sua aplicaoRuby, para programar sua aplicaoRails, o framework para desenvolver aplicaes web 55. OBRIGADO!twitter: @sergiohenriquesergiohenriquemiranda.com.br </p>