Workshop Ruby on Rails dia 2 ruby-pt

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Workshop Ruby on Rails dia 2 ruby-pt - Presentation Transcript

    1. Workshop Ruby on Rails Dia 2
    2. Apresentação Ruby on Rails
    3. REAL baseado em necessidades reais DRY elimina tarefas repetitivas COC adopta convenções ÁGIL aberto a mudanças no desenvolvimento
    4. Princípios DRY: Don’t Repeat Yourself Cada coisa no seu sítio Reduzir a quantidade de código reduz erros COC: Convenção sobre Configuração Torna as aplicações mais fáceis de entender Menos trabalho de desenvolvimento Só precisamos de configurar situações extra- ordinárias
    5. • Desenhado para a “felicidade” do programador • Felicidade + Motivação = produtividade • Ambiente de testes incluído • Flexibilidade perante as mudanças • Velocidade de desenvolvimento (agilidade) • Beleza do código
    6. Controller •Recebe os pedidos http do utilizador •Prepara a informação que vai ser mostrada ao utilizador. •Responsável por : • apresentar os resultados • gerir o diálogo
    7. Controller •Filtros (filters) •Permite executar código antes/depois das acções •Permite saltar as próprias execuções das acções •Muito útil para autenticação e outros... •Alguns exemplos: • before filter, after filter, around filter
    8. MODEL •Models (bd) representam as tabelas das bases de dados •Declaração é feita de forma limpa e legível •Não é necessário indicar nome de tabelas ou chaves primárias/estrangeiras mas tudo pode ser personalizado!
    9. MODEL •Relacionamentos de forma pré-definida • has_many • belongs_to • has_and_belongs_to_many
    10. MODEL •Migrations permitem alterar a base de dados •Permitem actualizar facilmente a estrutura da base de dados. •Não é preciso saber SQL, nem mexer na BD directamente. •Podemos criar tabelas, chaves, indexes, etc.
    11. VIEW •Gerem a apresentação visual da aplicação •Layouts guardam o aspecto geral das páginas •Existe separação entre dados e aspecto • ex: xml, html, json, vcard, atom, etc...
    12. VIEW •Helpers • Objectivo: Simplificar e não repetir código • Formulários • Geração de URL’s • Geração de Javascript (Prototype + Script.aculo.us) • Formatos de texto / números / datas ...
    13. Ambiente de Desenvolvimento
    14. Várias opções Aptana Studio NetBeans Eclipse Textmate Vim Ruby in Steel (Visual Studio)
    15. Bases de Dados
    16. Não limitado a uma plataforma SQLite (incluído na framework) MySQL PostgreSQL Oracle SQL Server Outros...
    17. Live Coding
    18. criar uma aplicação
    19. •mac> cd projectos •mac> rails projecto_novo create app/views create app/controllers create app/helpers create app/models ::: create log/development.log create log/test.log
    20. Cada coisa no seu lugar Aplicação (MVC) Controladores Modelos Vistas Público dispatchers Imagens CSS Javascript
    21. 3 ambientes integrados
    22. Base de Dados 1 tabela = 1 modelo Classes ficam guardadas em app/models e estendem ActiveRecord::Base Nomes das tabelas no plural e nomes das classes no singular As colunas são mapeadas como atributos do modelo As tabelas têm uma chave primaria ( id )
    23. Excepções self.table_name = ‘my_legacy_table’ self.primary_key = ‘my_id’ self.pluralize_table_names = false self.table_name_prefix = ‘my_app’
    24. Active Record CRUD Create: create, new Read: find, find_by_<attr> Update: save, update_attributes Delete: destroy
    25. Boas Prácticas Não colocar muito código no controller/view. O objectivo é models com muito código e controllers com pouco.
    26. Routes Routes são regras que procuram mapear URL’s à hash dos Params. A hash dos params possui o controller e a action a invocar. Routes são definidas no fich config/routes.rb e são aplicados pela ordem que aparecem. Se não houver comparação possível, devolve erro 404.
    27. REST REST é uma alternativa ao SOAP e uma maneira de adicionar uma API tipo web service a uma aplicação. O estado do sistema está dividido em recursos que são alcançados via hyperlinks. Todos os recursos têm um interface uniforme e operações bem definidas. REST foi desenhado para suportar escalabilidade e flexibilidade.
    28. REST Recursos são tipicamente models e cada um tem um controller com 7 actions: create, new, sho, update, edit, destroy Existem 4 tipos de operações: Create, Read, Update e Delete (CRUD) As 4 operações correspondem aos verbos HTTP: GET, POST, PUT, DELETE Podemos gerar as rotas usando map.resources :nomedomodeloplural
    29. Routes REST map.resources :articles
    30. AJAX - Links e forms <%= link_to_remote \"Destroy (AJAX)\", :url => workshop_path(workshop), :confirm => \"Are you sure?\", :method => :delete %> <%= link_to_function \"Create new?\", \"$('newuser').toggle().highlight();\" %> <%= link_to_function \"Create new?\" do |page| page['new_user'].show page['select_user'].hide page['new_user'].highlight end %> <% form_remote_tag :url => {:action => 'update'} do %> <%= hidden_field_tag \"prompt[id]\", @prompt.id %> <%= render :partial => 'form', :locals => {:mode => 'edit'} %> <%= submit_tag \"Edit\" %> <% end %>
    31. RJS RJS é uma API em Ruby para gerar código javascript que é enviado de volta ao browser e executado. É especialmente útil para actualizar várias partes da página.
    32. RJS - Exemplos page.insert_html :bottom ‘todo_list’, “<li>#{todo.name}</li>” page.replace_html ‘flash_notice’, “Todo added: #{todo_name}” page.replace ‘flash_notice’, :partial => ‘flash’, :object => todo page[:flash_notice].remove|show|hide|toggle # page[:flash_notice] <=> $(‘flash_notice’) page.alert “The form contains the following errors: #{errors.join(“, “)}” page << “alert(‘Hello there’)” # Append raw JavaScript to be executed page.visual_effect :pulsate, ‘flash_notice’ page.delay(3) do page.visual_effect :fade, ‘flash_notice’ end
    33. Testes Testes Unitários e funcionais RSPEC http://rspec.info/ Shoulda http://thoughtbot.com/projects/shoulda/ Saber mais: http://blog.jayfields.com/
    34. Internacionalização Introduzida na versão 2.2 do Ruby on Rails Traduz datas, numeração, strings, etc Referências: http://rails-i18n.org/ http://github.com/svenfuchs/rails-i18n/ tree/master/rails%2Flocale
    35. Conclusões Criámos uma aplicação web para gerir workshops e inscrições Conseguimos mapear tabelas para objectos sem trabalho manual e aborrecido. Não precisámos recompilar ou reiniciar a aplicação após cada mudança no código. Não precisámos configurar dezenas de arquivos XML. Só foi preciso inserir o nome/password da base de dados. Não precisámos de javascript para escrever AJAX. Usámos Ruby nas três camadas da aplicação. Ganhamos uma API de borla. :) Temos uma estrutura de testes unitários e funcionais.
    36. Performance
    37. Performance Ver mais: http://reinventar.com/2008/09/ performance-on-rails-barcamp-pt-08/ http://railslab.newrelic.com/ Ferramentas de profiling www.fiveruns.com
    38. Deployment
    39. Várias opções Apache + Passenger Nginx + Mongrel Lighttpd FastCGI Outras
    40. Recomendação Apache + Passenger www.modrails.com
    41. Outras ferramentas
    42. CAPISTRANO Ferramenta para automatizar operações nos servidores de produção Documentação em: www.capify.org Instalação: gem install capistrano Ver tarefas: cap -T
    43. Exemplo deploy
    44. Exemplo de Receitas Receita Capistrano para deploy em Passenger: http://reinventar.com/2008/09/setting-up- git-and-passenger-with-capistrano/
    45. O Futuro
    46. Novidades Fusão entre Rails e MERB Novas funcionalidades Aposta na performance
    47. Conferências e a comunidade
    48. RUPY RubyConf RailsConf Euruko Scottland on Rails Rails Summit Latin America Conferencia Rails (Espanha) Paris on Rails
    49. Livros The Rails Way - Obie Fernandez Programming Ruby - Dave Thomas Chad Fowler Andy Hunt Ruby Pocket Reference - Michael Fitzgerald
    50. Vídeos RailsCasts PeepCode Pragmatic Videos Rails Envy E muitos mais...
    51. Exemplos Open-Source Tracks - Gestão de tarefas Insonshi - Rede Social Beast - Forum Typo - Blog RadiantCMS - Gestor de Conteúdo
    52. Websites www.ruby-pt.org www.rubyonrails.org www.ruby-lang.org
    53. Perguntas?
    54. Obrigado Emanuel Mota www.ruby-pt.org - emanuel.mota@gmail.com Pedro Sousa www.thinkorange.pt - psousa@thinkorange.pt

    + Pedro  SousaPedro Sousa, 8 months ago

    custom

    1086 views, 1 favs, 0 embeds more stats

    Dia 2 do workshop sobre Ruby on Rails de 2 dias.
    Ne more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1086
      • 1086 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 34
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories