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