【问题标题】:how can i connect to two database servers in rails app parallally?如何并行连接到 Rails 应用程序中的两个数据库服务器?
【发布时间】:2015-12-31 08:13:56
【问题描述】:

在我的 rails 应用程序中,我想连接到两个数据库服务器。一个是ms-sql(microsoft sql server),另一个是mysql 数据库。我怎样才能并行连接到两台服务器。我知道有些人在开发中使用sqlite3,在生产中使用postgres 数据库。我不想这样。我想要的是开发或生产我想并行连接到两个数据库。我怎样才能?我需要以什么方式写database.yml file。有什么 gem 可以连接到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

【问题讨论】:

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


【解决方案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

这允许您从“其他连接”数据库继承:

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

虽然这可以完美运行(尽管存在与其他数据库的 schema 有关的一些问题),但在尝试使用 has_many :through 之类的东西时会遇到一个主要问题。

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

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 2017-09-14
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多