A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Merb Desenvolvimento Web com Ruby sem Rails Danilo Sato ThoughtWorks UK www.dtsato.com.

Apresentações semelhantes


Apresentação em tema: "Merb Desenvolvimento Web com Ruby sem Rails Danilo Sato ThoughtWorks UK www.dtsato.com."— Transcrição da apresentação:

1 Merb Desenvolvimento Web com Ruby sem Rails Danilo Sato ThoughtWorks UK

2 Merb?

3 Rails não escala!

4

5 Aviso: Eu sou fã de Rails

6 Lembram?

7 Não é bem assim…

8 Rails = Revolução Mudou a forma de encarar o desenvolvimento Web Opinionated: – Testes – Migrations – Convention over Configuration – DRY

9 Opinião forte Estrutura da aplicação

10 Opinião forte Estrutura da aplicação MVC

11 Opinião forte Estrutura da aplicação MVC AJAX: Script.aculo.us / Prototype

12 Opinião forte Estrutura da aplicação MVC AJAX: Script.aculo.us / Prototype ORM: ActiveRecord

13 Opinião forte Estrutura da aplicação MVC AJAX: Script.aculo.us / Prototype ORM: ActiveRecord Testes: Test::Unit – unit / functional / integration

14 Opinião forte Estrutura da aplicação MVC AJAX: Script.aculo.us / Prototype ORM: ActiveRecord Testes: Test::Unit – unit / functional / integration Mailer/ActiveResource/ActiveSupport/…

15 Perfeito para Iniciantes Modelo de Dreyfus: – Iniciante Práticas e Regras independentes de contexto

16 Perfeito para Iniciantes Modelo de Dreyfus: – Iniciante Práticas e Regras independentes de contexto – Competente Contexto é importante, mas sem prioridade

17 Perfeito para Iniciantes Modelo de Dreyfus: – Iniciante Práticas e Regras independentes de contexto – Competente Contexto é importante, mas sem prioridade – Proficiente Contexto interpretado de forma holística

18 Perfeito para Iniciantes Modelo de Dreyfus: – Iniciante Práticas e Regras independentes de contexto – Competente Contexto é importante, mas sem prioridade – Proficiente Contexto interpretado de forma holística – Expert Decisões baseadas na intuição

19 Perfeito para Iniciantes Modelo de Dreyfus: – Iniciante Práticas e Regras independentes de contexto – Competente Contexto é importante, mas sem prioridade – Proficiente Contexto interpretado de forma holística – Expert Decisões baseadas na intuição – Mestre Ações sem prestar atenção na consciência

20 Mas e se quero algo diferente? Fugir do padrão é difícil, mas não impossível

21 Merb Framework web MVC em Ruby Desenvolvido pelo Ezra – EngineYard – Brincando com Mongrel Handlers Mongrel + Erb

22 Menos mágica ×Symbol.to_proc (&:color)

23 Menos mágica ×Symbol.to_proc (&:color) ×returning {}

24 Menos mágica ×Symbol.to_proc (&:color) ×returning {} ×Active Support:

25 Menos mágica ×Symbol.to_proc (&:color) ×returning {} ×Active Support: ×distance_of_time_in_words_to_now

26 Menos mágica ×Symbol.to_proc (&:color) ×returning {} ×Active Support: ×distance_of_time_in_words_to_now ×auto_link_ _addresses

27 Menos mágica ×Symbol.to_proc (&:color) ×returning {} ×Active Support: ×distance_of_time_in_words_to_now ×auto_link_ _addresses ×cycle

28 Flexível merb-core

29 Flexível merb-core merb-more – merb-action-args /merb-assets – merb-builder / merb-cache – merb-freezer / merb-gen – merb-haml / merb-mailer – merb-parts / merb-slices

30 Rack Ebb Evented Mongrel FastCGI Mongrel Thin Webrick

31 Leve RailsMerb CoreMerb More LOC LOC (Testes) OBS: Linhas de Código desconsiderando comentários e linhas em branco Rails vs. Merb Script adaptado de code_statistics.rb (usado no Rails para fazer rake:stats)

32 Leve RailsMerb CoreMerb More LOC55393 LOC (Testes)37639 OBS: Linhas de Código desconsiderando comentários e linhas em branco Rails vs. Merb Script adaptado de code_statistics.rb (usado no Rails para fazer rake:stats)

33 Leve RailsMerb CoreMerb More LOC LOC (Testes) OBS: Linhas de Código desconsiderando comentários e linhas em branco Rails vs. Merb Script adaptado de code_statistics.rb (usado no Rails para fazer rake:stats)

34 Rápido Thread-safe

35 Rápido Thread-safe Consegue atender requisições sem bloquear

36 Rápido Thread-safe Consegue atender requisições sem bloquear Benchmark (replies/s): Fonte: MínimoMédiaMáximoD.P. Rails Merb

37 Rápido Thread-safe Consegue atender requisições sem bloquear Benchmark (replies/s): Fonte: MínimoMédiaMáximoD.P. Rails Merb

38 Rápido Thread-safe Consegue atender requisições sem bloquear Benchmark (replies/s): Fonte: MínimoMédiaMáximoD.P. Rails Merb

39 A vida fora do Mutex

40 O famoso exemplo Upload de arquivo: – Operação demorada – Rails padrão bloqueia até terminar de responder

41 O famoso exemplo Upload de arquivo: – Operação demorada – Rails padrão bloqueia até terminar de responder – Isso significa: Mongrel não responde mais nenhuma requisição!

42 O famoso exemplo Upload de arquivo: – Operação demorada – Rails padrão bloqueia até terminar de responder – Isso significa: Mongrel não responde mais nenhuma requisição! – Soluções: BackgroundDb Custom Mongrel Handler …

43 Lock Rails (dispatcher.rb)

44 Lock Rails (dispatcher.rb)

45 Lock Rails segura o mutex antes de: – Determinar o roteamento – Atender a requisição

46 Lock Rails segura o mutex antes de: – Determinar o roteamento – Atender a requisição Algoritmo de rotas no Rails: – Não thread-safe – ~ 1100 linhas de código complexo

47 Lock Rails segura o mutex antes de: – Determinar o roteamento – Atender a requisição Algoritmo de rotas no Rails: – Não thread-safe – ~ 1100 linhas de código complexo ActiveRecord

48 Lock Algoritmo de rotas no Merb: – ~ 600 linhas de código complexo – Thread-safe Não é executado dentro do mutex

49 Lock Algoritmo de rotas no Merb: – ~ 600 linhas de código complexo – Thread-safe Não é executado dentro do mutex Não acoplado ao ActiveRecord

50 Lock Algoritmo de rotas no Merb: – ~ 600 linhas de código complexo – Thread-safe Não é executado dentro do mutex Não acoplado ao ActiveRecord

51 Coisas legais no Merb

52 Retorno da action flexível render: – String – Template (formato, status_code, layout) redirect proc: – Libera o mutex e continua executando o bloco

53 Exemplo

54 render_deferred Recebe um bloco que será executado fora do mutex

55 render_then_call Renderiza a String e executa o bloco for a do mutex

56 render_chunked Um bloco que enviará pedaços de dados cada vez que for chamado Teste no Firefox para ver os pedaços chegando aos poucos

57 Rotas Flexíveis Padrão

58 Rotas Flexíveis Padrão Subdomains

59 Rotas Flexíveis Padrão Subdomains RESTful

60 Rotas Flexíveis Padrão Subdomains RESTful Aninhadas

61 Rotas Flexíveis Padrão Subdomains RESTful Aninhadas Regex

62 Rotas Flexíveis Padrão Subdomains RESTful Aninhadas Regex Ver rotas

63 Plugins são Gems! – merb_activerecord / merb_datamapper / merb_sequel – merb_helpers – merb_param_protection – merb_stories / merb_test_unit – merb_has_flash – merb-auth / merbful_authentication – merb_paginate – … –

64 Estrutura da Aplicação Padrão

65 Estrutura da Aplicação Padrão Flat

66 Estrutura da Aplicação Padrão Flat Very Flat

67 Migrar do Rails é fácil

68 Coisas não tão legais no Merb

69 Lembram?

70 Merb??

71 Mas… O código é legível Documentação está crescendo: – – – Livros: – – (em breve) – (online - em desenvolvimento)

72 Imaturo Ainda não chegou na versão 1.0 Menos tempo de vida Comunidade menor Bem menos plugins

73 Conclusão

74 Resumo Merb: – Menos mágica – Flexível – Leve – Rápido – Familiar para quem conhece Rails – Em desenvolvimento…

75 Rails ou Merb? Depende Rails é melhor para iniciantes Merb é para quem gosta de brincar com coisas novas

76 Use a ferramenta certa! Tem muito mais (só em Ruby): – Ramaze – Sinatra – Camping – Nitro – IOWA – …

77 Merb Desenvolvimento Web com Ruby sem Rails Danilo Sato ThoughtWorks UK


Carregar ppt "Merb Desenvolvimento Web com Ruby sem Rails Danilo Sato ThoughtWorks UK www.dtsato.com."

Apresentações semelhantes


Anúncios Google