contato@koshtech.com +55 21 98038-2606

ForkInRails de 02/05/2012 - Portando o rbDB para Rails 3

rbDB, a alternativa em Ruby on Rails ao phpMyAdmin foi feita no Rails Rumble 2008 http://railsrumble.com/ como aplicação do redox.

 Vão portar o quê?

rbDB, a alternativa em Ruby on Rails ao phpMyAdmin foi feita no Rails Rumble 2008 http://railsrumble.com/ como aplicação do redox. Apesar de estar parado há 3 anos e utilizar Rails 2.1.1, funciona, mesmo tendo bugs e lhe faltando muitos recursos. Seu site oficial está fora do ar pelo menos há 4 meses mas o screencast no Vimeo mostra bem a ideia geral da ferramenta.

O que nos motivou a usar o rbDB, foi que eu não queria ter que instalar PHP em um servidor de Apps Ruby somente para ter o phpMyAdmin rodando. Ele e uma otima ferramenta, mas eu queria algo em Ruby. Esta foi a mesma motivação do Redox: Uma ferramenta online em Ruby para gerênciar o MySQL.

Buscando no Github por alternativas, encontrei o rdDB. O projeto estava muito desatualizado, nem tinha Gemfile e colocá-lo rodando foi um trabalho de tentativa e erro. Graças ao RVM, estamos usando-o há 9 meses, convivendo com seus bugs e limitações. Mas a app que atende o básico do básico vale a pena.

Desde sua instalação em nosso servidor sonhávamos em atualizar seu código para Rails 3, mas sabíamos que isto só aconteceria num ForkInRails.

Enfim o ForkInRails.
  Em todos os encontros os bate-papo são sempre muito construtivos e engraçados. Neste, tivemos a presença do Reynaldo, quem iniciou falando dos perfis das empresas no Rio. Segundo ele, nossas ideias do ForkInRails e do StartOnRails era o que faltava para movimentar a comunidade Ruby. Nem sempre um desenvovedor autônomo tem a oportunidade de compartilhar conhecimento. Coisa que geralmente fica restrita às equipes no mundo corporativo.

Depois o papo resetou e foi parar no Counter Strike e Call of Duty. Foi quando o Vagner revelou que, em seu tempo de CS, era frequentemente banido dos servidores devido à sua média de mortes, que era algo em torno de 70/3. Ninguém, nem nesta época, nem em outra qualquer, ficaria feliz em jogar num servidor com um jogador tão viciado assim.

Depois voltamos ao Rails. O Tauil deu uma interessante justificativa para não se incluir o arquivo .rvmrc no projeto por tratar-se de um arquivo de configuração local e o desenvolvedor precisa ter a liberdade de trabalhar com suas próprias gemsets sem gerar conflito para os demais desenvolvedores. De fato, nem precisamos ir tão longe no pensamento para imaginar o problema que daria no caso do projeto rodar em diferentes rubies.

  Em seguida, apresentamos o rbDB ao pessoal e iniciamos o trabalho. Utilizamos a Gemfile que fiz na mão 9 meses atrás. Colocamos a App para rodar. O Reynaldo teve problemas no Mac para ter o código rodando. Uma coisa que vale a pena ser citada são os detalhes. Sempre vemos nos encontros aqui na empresa problemas causados por detalhes esquecidos. Uma dica: Os detalhes não podem ser menosprezados.

Quando todos tinham feito o clone de nosso fork no Github e a App pronta, o Taul fez par com Reynaldo e com o Vagner. Foi quando chegaram o Fernando e o Pichot. Diego chegou em seguida.

O plano era atualuzar a app, que rodava em Ruby 1.8.7 e Rails 2.1.1, para Ruby 1.9.3 com Rails 3.2.2. Enquanto decidiam a estratégia de atualização e testavam a Gem Rails Upgrade, tirei algumas duvidas do Fernando e do Pichot. Desistimos da Gem Rails Upgrade, os testes conduzidos nos mostraram que teríamos tanto trabalho quanto fazer tudo manualmente. Tentei atualizar na mão o framework, mas seria até mais trabalhoso. Criamos, então, uma App nova e geramos a Gemfile incluindo os plugins que encontramos atualizadas em forma de GEMs. As que não possuiam versões atualizadas foram ignoradas por enquanto. Copiamos os modelos, controladores, helpers, voews e os testes, tudo manualmente e formos acertando o código.

Quando executamos a aplicação, paramos por causa de um erro de conexão ao banco de dados. A aplicação não pode efetuar a conexão ao banco de dados ao iniciar, já que nenhum banco de dados foi selecionado neste momento. Na versão original o Redox sobreescreveu o método do Active Record que faz a conexão. Foi onde paramos e de onde continuaremos no próximo ForkInRails.

Detalhes do rbDB:
Criador Redox (Sylvain Utard)
https://github.com/redox

Versão portada para Rails 3.2.2
https://github.com/KoshTech/rbdb

Versão original feita em Rails 2.1.1
https://github.com/redox/rbdb

Site oficial que está fora do ar
http://www.rbdb.org/

Screencast
http://www.vimeo.com/2046491