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

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

Desenvolvimento Web com Ruby sem Rails

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento Web com Ruby sem Rails"— Transcrição da apresentação:

1 Desenvolvimento Web com Ruby sem Rails
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 Mongrel + Erb
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 Rails Merb Core Merb More LOC LOC (Testes) OBS:
Linhas de Código desconsiderando comentários e linhas em branco Rails vs. Merb-0.9.3 Script adaptado de code_statistics.rb (usado no Rails para fazer rake:stats)

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

33 Leve Rails Merb Core Merb More LOC 55393 5406 1774 LOC (Testes) 37639
4529 1184 OBS: Linhas de Código desconsiderando comentários e linhas em branco Rails vs. Merb-0.9.3 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ínimo Média Máximo D.P. Rails Merb

37 Rápido Thread-safe Consegue atender requisições sem bloquear
“Benchmark” (replies/s): Fonte: Mínimo Média Máximo D.P. Rails 0.0 43.4 75.2 30.8 Merb

38 Rápido Thread-safe Consegue atender requisições sem bloquear
“Benchmark” (replies/s): Fonte: Mínimo Média Máximo D.P. Rails 0.0 43.4 75.2 30.8 Merb 73.3 143.0 65.8

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: Algoritmo de rotas no Rails:
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: Algoritmo de rotas no Rails:
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: Não acoplado ao ActiveRecord
~ 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: Não acoplado ao ActiveRecord
~ 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:
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 Desenvolvimento Web com Ruby sem Rails
Merb Desenvolvimento Web com Ruby sem Rails Danilo Sato ThoughtWorks UK


Carregar ppt "Desenvolvimento Web com Ruby sem Rails"

Apresentações semelhantes


Anúncios Google