Aproveitar Banco Existente

141 views
Skip to first unread message

faelvi...@yahoo.com.br

unread,
May 22, 2013, 9:31:50 AM5/22/13
to rail...@googlegroups.com
Pessoal, 


Tenho um programa em Java que utilizo nele o Mysql. Queria saber como faço para aproveitar essa base de dados
existente em um programa que irei criar utilizando Rails.

Alguém pode me dá uma dica de como fazer isso ou me passar um tutorial de como criar um programa em Rails
aproveitando uma base de dados já existente.


Obrigado.

Jonathan Calixto

unread,
May 22, 2013, 10:36:09 AM5/22/13
to Grupos Rails BR
Ola Rafael,

bem ao meu ver você pode sim conectar em um banco que não possue a estrutra padrão do rails, mas você vai ter que adaptar seu modelo para isso.
um exemplo:
teria que definir o nome do banco e do PK

  set_table_name :in_adt_a03
  set_primary_key :id_in_adt_a03

no database.yml
teria que fazer algo do tipo
login: &login
  adapter: postgresql
  host: localhost
  reconnect: true
  encoding: unicode
  pool: 5

development:
  <<: *login
  username: user
  password: password
  database: banco_principal

java_development:
  <<: *login
  username: user2
  password: password2
  database: banco_java

php_development:
  <<: *login
  username: user3
  password: password2
  database: banco_php


Atenciosamente,

Jonathan Celestino Calixto
Desenvolvedor Web Ruby on Rails
email:     jonathan...@gmail.com
msn:      jonathan...@gmail.com
skype:    jonathanccalixto
twitter:    jonathanccalixt


--
--
Você recebeu essa mensagem porquê está inscrito no Google
Groups "rails-br".
Para enviar uma mensagem para o grupo, mande um email para rail...@googlegroups.com
Para se descadastrar, mande um e-mail para
rails-br+u...@googlegroups.com
Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: http://goo.gl/YGgt7
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Jonathan Calixto

unread,
May 22, 2013, 10:43:19 AM5/22/13
to Grupos Rails BR
eu criaria umas classe dentro de app/models

banco_java.rb
class BancoJava < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "java_#{Rails.env}"

  private

  def set_table_name(table_name)
    super "#{java_db}.#{table_name}"
  end
end

banco_php.rb
class BancoPhp < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "php_#{Rails.env}"

  private

  def set_table_name(table_name)
    super "#{php_db}.#{table_name}"
  end
end

e em config/initializes criaria uma arquivo com o seguinte:

config/initializers/db_configuration.rb

ActiveRecord::Base.class_eval do
  def self.java_db
    ActiveRecord::Base.configurations["java_#{Rails.env}"]['database']#
  end
  def self.php_db
    ActiveRecord::Base.configurations["php_#{Rails.env}"]['database']#
  end
end



Atenciosamente,

Jonathan Celestino Calixto
Desenvolvedor Web Ruby on Rails
email:     jonathan...@gmail.com
msn:      jonathan...@gmail.com
skype:    jonathanccalixto
twitter:    jonathanccalixt


faelvi...@yahoo.com.br

unread,
May 22, 2013, 10:48:20 AM5/22/13
to rail...@googlegroups.com

Jonathan, obrigado pela ajuda. Irei resolver o problema conforme vc me indicou.

Abraço.

Fabiano Vilela

unread,
May 22, 2013, 10:52:25 AM5/22/13
to rail...@googlegroups.com
Opa,

É até bem tranquilo.
Só você configurar o database.yml para o seu banco legado.

No meu caso tenho uma tabela do meu banco legado com o nome de physical_analysis e criei um model com o nome Result, então tenho que informar o nome da tabela com o self.table_name, porque por convenção o rails define o nome da tabela pelo nome do model no plural. 
Também tenho uma uma chave estrangeira, a qual preciso passar para o rails qual é o model/classe que essa chave pertence
No caso do id, não esteja no padrão do rails, você precisa também informar qual é o id com o self.primary_key
Os nomes das tabelas, campos se estiverem em CAPS no banco você deve colocá-los em CAPS no model (case sensitive)


class Result < ActiveRecord::Base
  self.table_name = "physical_analysis" 

  self.primary_key = 'ID'

  belongs_to :type, :class_name => PhysicalType, :foreign_key => "id_physical_type"
  ...
end


class PhysicalType < ActiveRecord::Base
   self.table_name = 'const_physical_type'
  ...
end

Att

[]'s


Em 22 de maio de 2013 10:31, faelvi...@yahoo.com.br <faelvi...@yahoo.com.br> escreveu:
--
--
Você recebeu essa mensagem porquê está inscrito no Google
Groups "rails-br".
Para enviar uma mensagem para o grupo, mande um email para rail...@googlegroups.com
Para se descadastrar, mande um e-mail para
rails-br+u...@googlegroups.com
Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: http://goo.gl/YGgt7
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Bacharel em Sistemas de Informação
http://www.fabianovilela.com
Twitter
Logo.pngAntes de imprimir, pense em seu compromisso com o Meio Ambiente.

Diego Collares

unread,
May 22, 2013, 3:19:28 PM5/22/13
to rail...@googlegroups.com
self.table_name = "nome_da_tabela"
self.primary_key =("id")

e configurar seu database.yml
Diego Collares
Desenvolvedor Web
(Design, Front-end, Rails)
55 21 2224-5777
55 21 6948-6316 


Everaldo Gomes

unread,
May 22, 2013, 3:21:43 PM5/22/13
to rail...@googlegroups.com
Dependendo do tamanho do App etc. eu criaria o banco em Rails mesmo e faria uma migração e me livraria do "legado maldito".


2013/5/22 Diego Collares <di...@maino.com.br>

Daniel Vilar

unread,
May 22, 2013, 4:55:41 PM5/22/13
to rail...@googlegroups.com
Eu ia dizer isso agorinha Everaldo. Dependendo do tamanho do banco eu criaria as tabelas pelo Rails e depois migraria. Voce aproveita todas as convenções do rails.




Att,

CARDOSO, Daniel Fernandes Vilar.
Analista de Sistemas.
http://lattes.cnpq.br/4472098497391191


2013/5/22 Everaldo Gomes <everald...@gmail.com>

Everaldo Gomes

unread,
May 22, 2013, 4:57:45 PM5/22/13
to rail...@googlegroups.com
:)




2013/5/22 Daniel Vilar <fvcd...@gmail.com>
Reply all
Reply to author
Forward
0 new messages