Uncategorized

Server rack à la zeroconf com Pow

Já faz algum tempo que não mantenho um apache instalado no ambiente de desenvolvimento, isso se deve principalmente ao fato de que já não desenvolvo nada em php a alguns anos, logo um apache rodando o tempo todo na máquina acaba sendo um desperdicio de recursos.

Uma coisa que tem aumentando muito por aqui são aplicações rack, sejam projetos em andamento, sejam apps de teste para as mais diversas gemas que aparecem por esse mundão do ruby, sempre preciso levantar uma app para testá-la e quase sempre isso quer dizer levantar uma app rack.

Não que digitar um comando como rackup, padrino start, rake start ou similares sejam a morte, mas eu acabo perdendo um tempinho gerenciando o que esta ou não em pé. Sem contar que na hora de acessar, o historico do browser acaba virando uma zona: http://localhost:3000, http://localhost:4567, http://localhost:9000 e por ai vai, acabo perdendo um pouco de comodidade que o Chrome oferece na busca de urls já acessadas. Evidente que existe a opção de adicionar uma host no /etc/host, mas mesmo isso acaba não sendo prático de manter.

Então surge o Pow, o Pow é uma aplicação escrita pelo Ryan McGeary, que tem como objetivo ser um zeroconf rack server para Mac OS X, voltado exclusivamente ao ambiente de desenvolvimento. Como ele suporta rack apps, consequentemente suporta Rails apps.

Como toda ferramenta zero-conf, a instalação e configuração do Pow é muito simples:

$ curl get.pow.cx | sh

Em algum momento ele vai pedir a senha do root para fazer configurações de firewall (ele redireciona fluxo da porta 80 da sua máquina para porta 20559 do Pow), e vai criar uma symlink no seu home: ~/.pow.

Agora basta criar um symlink para sua aplicação dentro dessa pasta, e configuração já esta pronta:

$ ln -s ~/Projects/myapp ~/.pow/myapp

Acessando http://myapp.dev o Pow vai reconhecer o virtual host e automaticamente levantar a aplicação, se depois de 15 minutos a aplicação não tiver mais acessos o Pow dece a aplicação e continua aguardando conexões. Aqui uma dica: no Chrome digitar apenas myapp.dev não funciona, ele não identifica isso como um host e acaba indo parar na busca, o http:// se faz necessário (pelo menos no chrome dev foi assim).

Alguns features interessantes:

  • Auto refresh: Pelo menos aqui no testes com uma aplicação padrino (preciso falar um pouco mais sobre padrino), ele fez refresh dos meus controllers e models automaticamente, acredito que isso funcione também no Rails, vai depender mais de como o framework é desenvolvido;
  • Suporte a rvm: Por padrão ele procura pelo seguintes arquivos na pasta da aplicação: .powrc, .powenv ou .rvmrc, o que acaba sendo uma mão na roda se você utiliza .rvm;
  • Suporte a variáveis de ambiente: no arquivo .powenv você pode exportar variáveis de ambiente que sua aplicação utilize. Isso tem sido de grande utilidade por aqui, pois permite emular os comportamento de configuração que o Heroku utiliza;
  • Subdomínio: Este é um dos pontos fortes na hora de executar testes, facilita bastante poder digitar subdomínios, principalmente quando você esta desenvolvendo aplicações que utilizam subdomínios dinâmicos.
  • É mais: Mais detalhes sobre como utilizar e configuras as esta e vários outras opções na página do projeto: Pow

Como sempre o Pow não é a bala de prata, mas é sempre bom poder automatizar tarefas repetitivas, e quando isso envolve pouca configuração ou zero acaba ficando ainda melhor.

De volta das ferias

Bom 2008 foi um bom ano, não sou muito de ficar fazendo balanços e promessa de ano novo, mas espero que 2009 seja ainda melhor, e por falar em conquistas de 2008, finalmente saiu o vídeo da Arena do fisl 8.0:

Bem vindos ao novo endereço

Bom pessoal depois de muito pensar (que nada decidi em duas horas), resolvi registrar o domínio e mudar de casa.

O wordpress.com foi uma boa, mas ele é limitado em termos de recursos e não te oferece todo o poder do WordPress, então, aqui estamos com um novo visual e hospedando no VPS do projeto Shopcerto (qualquer dia desses falo sobre o projeto).

Espero escrever mais, e escrever bem, tenho lido os posts anteriores e ainda tem muito a caminhar.