Mongrel no lugar de Webrick

Vou ser bem direto: Webrick não é uma opção para servidor Ruby on Rails. Nem para testes.

Recentemente trabalhei no desenvolvimento de um sistema de indicações de oportunidades de negócios. O sistema era bem simples, e o desenvolvimento só não foi mais rápido pois foi o primeiro projeto adotado a ser desenvolvido em Ruby on Rails pela empresa. Como já citei num artigo anterior, “as primeiras semanas foram doloridas. Pensar tudo de trás para frente, uma nova linguagem, e tudo o mais que uma migração assim nos permite sofrer, pode ser um pouco dolorido, mas vale a pena.”

Uma das coisas que passei mais sufoco foi, com certeza, a dificuldade de configurar um servidor de entrega. Diversos fatores entraram em questão, a própria decisão de qual máquina seria escolhida, a criação da máquina virtual (já haviam outras máquinas virtuais instaladas) e outras particularidades que não dizem respeito ao RoR.

Se tratava de um servidor simples, que seria utilizado apenas para mostrar aos clientes o sistema funcionando e permitir que eles pudessem “brincar” um pouco com o sistema. Pensei logo: “ora, já usamos o Webrick para testes locais, logo não encontraremos problemas.” Mas não foi bem assim.

Rodar o Webrick localmente pode fazer tudo o que você pretende, mas tente rodar de um IP remoto. Pensando bem, tente rodar utilizando seu póprio IP da rede (não vale 127.0.0.1). No caso do nosso sistema, o carregamento de uma página simples de login durava cerca de 3 min. Quando entrava, enfim, no sistema, além da demora, alguns elementos (imagens) não eram carregadas. O Webrick era a grande dor de cabeça.

Parece besteira de iniciante. E realmente era, mas naquele momento eu simplesmente não poderia ter perdido tanto tempo com isso.

A segunda tentativa que nos parecia óbvia foi instalar o Passenger: um mod_rails para o Apache que supostamente seria a opção mais viável. A instalação não foi tão diferente quanto qualquer mod para Apache, e suas configurações. O problema foi a inconstância do pacote e das gems. Primeiro que é quase impossível desinstalar a gem. Quando assim o fiz, simplesmente a gem continuava lá na “gem list”, mesmo desinstalada. Depois de formatarmos a máquina virtual e instalarmos tudo do zero novamente, funcionou perfeitamente. Nos demos por satisfeitos.

No dia seguinte, sem maior explicação ou alguém ter sequer acesso ao servidor, o passenger não funciona mais. E isso já era véspera da entrega do sistema. Algo assim não poderia falhar. Não era uma opção.

A essa altura, depois de muitas tentativas de correção, já havíamos desistido de entregar através do servidor de testes. Continuamos o desenvolvimento do sistema, pois alguns tópicos precisavam ser finalizados.

Dia seguinte, dia de entrega. Lendo alguns artigos em blogs que tratavam de Rails, me veio a possibilidade de testar o Mongrel. Fui meio sem esperança, pensando se tratar de algo “como o Webrick”, que serviria apenas para testes locais. A instalação é bastante simples, não passando de um “gem install mongrel”. Para rodar, bastava digitar “mongrel_rails start”. Nenhuma configuração foi necessária, nenhuma palha foi mexida, nada mais foi feito. Simplesmente duas linhas e lá estava meu servidor de testes funcionando e rodando a aplicação perfeitamente.

Em 2 min concluí uma operação que me custou cerca de 20 horas sem sucesso. Mais tarde, ao me aprofundar e ler casos de uso, descobri que o mesmo servidor Mongrel é o servidor Rails utilizado pelo Twitter. Sem sombra de dúvidas, poderia ser facilmente utilizado no servidor final, de produção.

Anúncios

3 comentários em “Mongrel no lugar de Webrick

  1. Sempre usei o Mongrel para desenvolvimento, mas uso o Passenger para Produção. Instalação fácil. Ontem tive problemas em configurar o terceiro projeto Rails no Servidor Apache+Passenger, alguma coisa a ver com o VirtualHost, tava chamando sempre o segundo projeto rails. Não resolvi direito. Acabei colocando os três Rails no mesmo VirtualHost.

  2. tive problemas em instalar o Mongrel, lendo alguns blogs encontrei a solução Thin, muito leve e rápida, e lendo a documentação superficialmente vi tópicos relacionados a integração de cluster servers Thin com o Nginx.
    A análise do Thin é interessante, pois a performance é superior ao Mongrel.
    Vale a pena dar uma olhada, a instalação é super fácil
    sudo gem install thin

    para startar no Ruby, na pasta do projeto thin start

    Mas o poderoso são os comandos da API dele, estou estudando cuidadosamente, pode ser uma alternativa interessante.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s