Introducao rubyonrails

179 visualizações

Publicada em

Introdução a Ruby on Rails

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

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

Nenhuma nota no slide
  • - Alguemaquijáprogramaemalgumalinguagem?- Conhece Ruby, conhece Rails?- Praquemconheceessapalestraébemintrodutóriamesmo…- Trabalhona MDL Sistemas, e tambémsouinicianteem Ruby, conheço e trabalho com Ruby a menos de 1 ano
  • Existe um eventochamadoRubyConfemSãoPauloqueérealizadotodoano e no anopassado a nossaequipefoiaté o evento- Essasloucasaitrabalhamcomigo =)
  • - O eventoépatrocinadopelaLocaweb…. Maisseilah, tem gentequenãogosta da Locaweb…. Eugosto =)
  • Então, euvoucontar um pouco da história do Ruby pravocês…Criadaem 1993 por Yukihiro Matsumoto, surgiu no ocidenteem 98 atraves de Dave Thomas e Andy HuntEm 2003 o framework Rails começou a serescritopelodinamarques David Hansson e somenteem 2004 foipublicadasuaprimeiraversãoEm 2010 foi um grandemarcoquandosurgiu o Rails 3.0
  • # Testarcódigos no consoleA leitura do Ruby émuitoclara, como nesses exemplos:CincovezesimpraBlaaaTermine a menosque “flisol” contenha (ouinclua) a palavra “iso”Com as palavras “fred”,”guilherme” e “pedro”: peguecadapessoa e a imprima com a primeiraletramaiúscula
  • Um poucosobre o MVC do RailsO Browser fazumarequisiçãopara o WebServerQuebusca no arquivo de rotas o quefazer com a URL requeridaE então o Dispatcher encontra o controller.O controller solicita/ounão, aoumachamada no model, quepodefazerumarequisiçãoaobanco de dados e retornaosvaloressolicitadosO controller renderiza a View e respondeaoWebServerqueentrega a requisiçãofeitapelo Browser
  • Um pouco de Convenção RESTExistemosmétodos de requisições GET, POST, PUT e DELETEA convenção SUGERE queusemos GET para o método show no rails, POST para create, PUT para update e DELETE para destroyIssonãoquerdizerquevocêé obrigado a obedeceressa “sugestão”A ação show, seria o select do SQL, create seria o insert, update o proprio update e o destroy o delete
  • Nãoqueroperdermuito tempo ensinandocomoinstalar Ruby ou o Rails, entãodeixeiessesdois links aquiO repositório do danielvlopesestásempreatualizado com um dos maisfáceispasso-a-passosobreinstalação de Ruby emambiente UnixE para windows, vcpodebaixar o instaladoratravés do site railsinstaller.orgÉmuitosimpesl =)
  • Vamosiniciarcriando um projeto do RailsNo comando RAILS NEW, passamos o nome do projetoquequeremosiniciar o desenvolvimentoOpcionalmenteeupassei a opção “-d postgresql” jáinformando a qualbanco de dados euireiusarAbrimos a basta do projeto e entãopodemosexecutar o nossoservidorpratesteA URL de acessoserialocalhostpassando a porta 3000 (executaroscomandos no terminal)
  • Vamosfalar um poucosobre a estrutura de pastas queforamgeradasOArquivoconfig/database.yml, contéminformaçõesparaconexão com o banco de dadosConfig/routes.rbguarda as rotas das requisições HTTPApp/controllers arquivosescritosem Ruby da camada de controleApp/helpers classes quefacilitamalgumastarefas da viewApp/models arquivosescritosem Ruby da camade de modeloounegócioApp/views contémuma pasta pracada controller quesuaaplicaçãotiverDb/migrate arquivos de migração, usadospraatualizarseubanco de dados
  • Falando um poucodessafunçãomágica do rails, o SCAFFOLDNãoé a forma recomendadapra se fazerumaaplicação, maispraajudaragentenessaapresentaçãoireiusarele e explicaroqueelefazNóspassamos a função rails generate scaffolg, logo dizemos o nome do model, no singular e de preferencia ingles, e osatributoscomofirst_name do tipo string e last_name do tipo stringUm dos arquivosgeradopelo scaffold foiumamigraçãopara o banco de dados, Primeiramentenósprecisamoscriar o banco de dados com “rake db:create”E executar a função “rake db:mgirate” paraexecutarnossoarquivo de migraçãocriadopeloscaffolgAgora abrimos o console e vamoscriar um novo usuário de forma manual
  • O Scaffold adicionou no nossoarquivo de rotas, umachamadapara o controller :usersNousers_controllerencontramososmétodos index, show, new, edit, create, update e destroyNo método index, vemosqueeletentatrazerTodososusuários e atribuir o resultadopraumavariável @users e responder no formato html oujsonEssavariavel @users tem um arroba “@” nafrente, quepermiteseracessivelnacamada de visãoEm views/users/index.html.erbdiz “peguecadausuário” e imprimaseufirst_name e last_name. Tambémémostrado links para “Exibir”, “Editar” e DeletarVamosabrir o model de usuário e vemosque o model estáliberandoacessoaosatributos :first_name e :last_nameVamoscriar um métodoaquichamadofull_nameE vamostestarele no show.html.erb
  • Voltandoao console, vamosfalar um poucosobreoperaçõesbásicas no ModelA partir do momentoqueseuobjetoherdacaracterísticas do ActiveRecord, elevemcheio de métodosprafacilitarsuavida no desenvolvimentoContando a quantidade de registros de usuários com User.countTrazendo o primeiroregistro de usuário e atribuindoele a variavel “u”Pegandoatributofirst_name de “u”Acessando o métodofull_name de “u”Atualizando um atributo com update_attribute
  • Vamosvalidar a presença de :first_name,issoquerdizerqueesseatributodeveráterseupreenchimentoobrigatório.Abrindo o model de User vamosadicionar a linha do validatesNo console vamostestar a inclusão do usuárioJãum e verificar se o registroévalidoAgora testaremos um registroinvalidoAinda no console, conseguimosteracessoaoserros da nossaaplicação com o método errorsPodemosanalisar a se o objetopodeser salvo com .saveE podemosretornar um erro com .save! (beng)
  • Queroapresentartambémoutrasformas de validaratributos no modelValidando a presende de :nome e :ano, vocêpodevalidarmais de um atributonamesmalinhaValidando ANO comonumericoValidandoinclusao de ANO entre 2009 a 2099Validando o tamanho de nome com no mínimo 4 caracteresE validando um format with expressão regular
  • A comunidade Ruby possuiumacomunidadebastanteativa de programadoresquecompartilhamcódigo. Para facilitaressecompartilhamento, a comunidade Ruby inventou as chamadasRubyBems, ou “GEMs”. Vocêpodeencontra-las no rubygems.orgUm exemplo de gem seria a simple_form, queauxilianacriação de formulários. Seucódigopodeseracessado no githubComo instalaruma GEM, abra o arquivoGemfile, e inclua gem passando o nome da gem entre aspas, opdionalmentevocêpodepassar a versão da gem quequerusarLogo, no terminal digitamos bundle install paraatualizar as gems
  • Tambémquerolembrarquemantemosumacomunidade no facebook, o ruby on cerradoE deixaralguns links paraestudosobre Ruby e RailsPerguntas?
  • Esperoqueiniciem um estudosobre rails e quetenhamgostadodessaapresentação.Obrigado!
  • Introducao rubyonrails

    1. 1. Douglas Resende Camargodouglas@maxstudio.com.br
    2. 2. MDL na RubyConf‟12
    3. 3. Locawebets
    4. 4. HistóriaRuby Criada em 1993 por Yukihiro “Matz” MatsumotoSomente em 1998 Ruby começou a aparecer no ocidenteatraves de Dave Thomas e Andy HuntEm 2003, o framework Rails começou a ser escrito peloDinamarques David HanssonEm 2004 Rails foi publicadoEm 2010 lançamento do Rails 3.0
    5. 5. Um pouco de Ruby5.times { print ‚Blaaa‛ }> Cinco vezes imprima “Blaaa”exit unless ‚flisol‛.includes? ‚iso‛> Termine a menos que “flisol” contenha(ou inclua) a palavra“iso”[‘fred’, ‘guilherme’, ‘pedro’].each do |pessoa|puts pessoa.capitalizeend> Com as palavras „fred‟, „guilherme‟ e „pedro‟: pegue cadapessoa e a imprima com a primeira letra maiúscula
    6. 6. MVC
    7. 7. Convenções - RESTExibir/Buscar Criar Alterar RemoverREST/HTTP GET POST PUT DELETERails (actions) show create update destroySQL select insert update delete
    8. 8. InstalaçãoMAC OSX & UBUNTUhttp://github.com/danielvlopes/ruby-unix/WINDOWShttp://railsinstaller.org/
    9. 9. Iniciando um Projeto# Criando uma aplicaçãorails new flisol -d postgresqlcd flisol/# Inicia o servidorrails server# URL local da aplicaçãohttp://localhost:3000/
    10. 10. Estrutura de PastasArquivo Funçãoconfig/database.yml Contém informações para conexãocom o banco de dadosconfig/routes.rb Rotas das requisições HTTPapp/controllers Arquivos escritos em Ruby dacamada de controleapp/helpers Classes que facilitam algumas tarefasda viewapp/models Arquivos escritos em Ruby dacamada de modeloapp/views Contém uma pasta pra cada controllerque sua aplicação tiverdb/migrate Arquivos de migração, usados paraatualizar seu Banco de Dados
    11. 11. Scaffold# Gerando modelo, controle e visõesrails generate scaffold user first_name:stringlast_name:stringdb/migrate/20130426210526_create_users.rb# Cria Banco de Dadosrake db:create# Atualiza o Banco para versão mais novarake db:migrate# Criando usuário via consoleUser.create first_name: “Maria”, last_name: “Silva”
    12. 12. Scaffoldconfig/routes.rbapp/controllers/users_controller.rbapp/views/users/*app/models/user.rbdef full_name[first_name, last_name].join(“ “)end
    13. 13. Operações Básicas# Quantidade de registros de usuáriosUser.count# Primeiro registro de usuáriou = User.first# Atributo first_nameu.first_name# Método full_nameu.full_name# Atualizar um atributou.update_attribute(:last_name, “Ultimo Nome”)
    14. 14. Validações# Validando a presença de :first_namevalidates :first_name, :presence => true# => trueUser.create(:first_name => “Jaum”).valid?# => falseUser.create(:first_name => nil).valid?# Mostrando errosu = User.createu.errors # => {:first_name=>[“can’t be blank”]}u.save # => falseu.save! # => ActiveRecord::RecordInvalid:Validation failed: First name can’t be blank
    15. 15. Validações# Outros tipos de validaçãovalidates_presence_of :name, :yearvalidates_numericality_of :yearvalidates_inclusion_of :year, :in => 2009..2099validates_length_of :name, :minimum => 4validates_format_of :name, :with => /[A-Z]d+/
    16. 16. GEM# Onde encontrarhttp://rubygems.org/# Código fonte abertohttp://github.com/plataformatec/simple_form# Instalando uma gemGemfilegem “simple_form”bundle install
    17. 17. Linkshttps://www.facebook.com/groups/rubyoncerrado/http://rubyonrails.com/http://apidock.com/rubyhttp://www.ruby-doc.org/http://guides.rubyonrails.org/http://railscasts.com/http://akitaonrails.com/http://github.com/http://why.nomedojogo.com/
    18. 18. OBRIGADO!Douglas Resende Camargodouglas@maxstudio.com.br

    ×