如何连接到rails app中的两个数据库服务器?

时间:2015-12-31 08:13:56

标签: mysql ruby-on-rails sql-server

在我的rails应用程序中,我想连接到两个数据库服务器。一个是ms-sql(microsoft sql server),另一个是mysql数据库。我怎样才能并行连接两台服务器。我知道有些人在开发和生产sqlite3数据库中使用postgres。我不想这样。我想要的是它是开发还是生产我想要并行连接到两个数据库。我怎么能够?以什么方式我需要写database.yml file。是否有任何宝石可以连接到ms-sql server数据库?

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: mysql-user-name
  password: mysql-password
  socket: /var/run/mysqld/mysqld.sock

  adapter: ms-sql like gem? 
  encoding: utf8
  pool: 5
  username: ms-sql-user-name
  password: ms-sql-password
  socket: /var/run/mysqld/mysqld.sock



  development:
  <<: *default
  database: template_development

1 个答案:

答案 0 :(得分:1)

我已经完成了something similar,虽然在has_many :through之类的问题上存在一个主要问题:

#lib/parallel.rb
class Parallel < ActiveRecord::Base
   establish_connection "other_#{RAILS_ENV}"
end

#config/database.yml
development:
  adapter: mysql
  database: development
  username: root
  password:
  host: localhost

other_development:
  adapter: mysql
  database: otherdb_development
  username: root
  password:
  host: localhost

这允许您继承“其他连接”db:

#app/models/user.rb
class User < Parallel
   ...
end

虽然这很有效(尽管有一些与其他数据库的schema有关的问题),但在尝试使用has_many :through之类的内容时会遇到一个主要问题。

我没有任何细节,但您必须小心将db与此功能之间的关联混合在一起。