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

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

😀 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

Anúncios

6 Responses to “GEtna – Ep. 3: Mapeando Tabelas do Banco de Dados”

  1. Abraão Coelho

    que bacana, fui até citado hahaha

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

  2. Luiz Arão Araújo Carvalho

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

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

  3. Amanda Varella

    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!

  4. Luiz Arão Araújo Carvalho

    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!

  5. João Paulo Lins

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

  6. Luiz Arão Araújo Carvalho

    hum…
    Legal.
    Obrigado pelos Links João Paulo.
    🙂

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