Developed By Luiz Arão Araújo Carvalho

GEtna – Ep. 3: Mapeando Tabelas do Banco de Dados

Posted by Luiz Carvalho | Posted in Artigos | Posted on 07-08-2008-05-2008

6

Primeiro passo de nosso gerador Rails era buscar todas as tabelas do banco de dados e criar a estrutura inicial… outro problema após algumas horas vendo documentação… bingo! nada XD, Pedindo ajuda para nossa comunidade de sábios desenvolvedores do rails-br, obtive varias sugestões como: De Buscar Pelo Model de Abraão Coelho, Cássio Marques, infelizmente não serviu, pois ainda não tenho model algum, necessito cria-los. Renan Andrade teve uma otima ideia, já que até agora eu defini que o banco seria MySQL poderia fazer um simples:

mysql> show tables; <= mostra as tabelas;
mysql> describe suatabela; <= exibe sua tabela com as descrições do campo.

OK, Mas queria algo mais pratico, tinha certeza que o ActiveRecord poderia fazer isso, e não ia desistir de encontrar.

Estava tentando algo bem bobo como:

ActiveRecord::Base.column_names

Me deparei com o seguinte erro:

NoMethodError: undefined method `abstract_class?’ for Object:Class
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1915:in `class_of_active_record_descendant’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1277:in `base_class’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1012:in `reset_table_name’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1008:in `table_name’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1145:in `columns’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1158:in `column_names’
from (irb):16

Ricardo S Yasuda e Davis Zanetti Me abriram os olhos quanto ao metodo que só funciona em uma instancia do ActiveRecord e não em uma Classe Abstrata, isso foi muito importante para a minha conclusão.

Ulisses de Albuquerque Deu uma dica boa sobre Adapters mas isso ainda não era claro pra mim, mas foi muito importante isso ai.

Juan Maiz então me endicou uma saída, utilizar o Sequel Uma solução perfeita para meus problemas, mas fiquei um pouco desanimado pensando que o ActiveRecord… o Poderoso ActiveRecord não tinha tal funcionalidade… e tambem que meu simples generator tenha que usar alguma dependência tão primitivamente para realizar uma pequena tarefa. Bom não desisti e fui feliz em minha busca e insistência.

@con = ActiveRecord::Base.connection
@table_names = @con.execute(‘show tables’)

Está ai, nossas tabelas :) legal né, saí juntando as dicas do pessoal todo e bingo, saiu alguma coisa, bom com isso já posso começar…, mas como sou meio curioso e me animei com esse negocio e não custava nada dar uma adentrada a mais… olha o que descobri…

@con = ActiveRecord::Base.connection
@table_names = @con.tables


:D Que legal, não era que o ActiveRecord Tinha mesmo o bendito Método… só um pouco de pesquisa e fica simples.

Agradeço a toda a Comunidade.

Abraços

Para ver todos os posts Sobre Getna clique aqui

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

Comments posted (6)

que bacana, fui até citado hahaha

boa sorte aí com o projeto, desde já aviso que vai ser muito útil!

aew @Abraão
claro, você ajudou nisso ai.

Obrigado.
vou fazer o melhor que posso.
abraços!

Muito legal max, quando estiver pronto não deixe de avisar! Realmente muito estranho alguém não ter feito antes! Faz rápido antes que alguém leve o crédito!

Olá Amanda
^^ Obrigado pela força
to trabalhando muito em cima disso, espero que ninguém o faça antes de mim se não vou perder muito coisa, alem de tempo.

pode ficar tranquila, vou avisar com certeza!

Agora que eu entendi mais ou menos o que você quer fazer… :P Dá uma sacada neste link:
http://tas.milk-it.net/carlos/rails-databrowser-lancado/
http://tas.milk-it.net/carlos/rails-databrowser-no-rubyforge/

hum…
Legal.
Obrigado pelos Links João Paulo. :)

Write a comment