Carregar apresentação
A apresentação está carregando. Por favor, espere
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.