在运行时连接到ruby中的两个不同的数据库

时间:2016-10-04 22:25:46

标签: mysql ruby-on-rails ruby

我在开发环境和生产环境中托管了一个数据库。我正在编写一个基于请求中的参数的API将写入开发或生产数据库中的表。我已将这两个条目放在database.yml文件中:

development:   
  adapter: mysql2   
  database: db1  
  username: root  
  password:  
  timeout: 5000   
  host: a.b.c.d   
  pool: 5  
  port: 1234

production: 
  adapter: mysql2 
  database: db1 
  username: root  
  password:  
  timeout: 5000  
  host: a.b.c.e  
  pool: 5  
  port: 1234

这是我的活跃记录:

class table1 < ActiveRecord::Base  
  self.table_name = 'table1' 
end

如何根据请求参数写入不同的环境?

3 个答案:

答案 0 :(得分:3)

选择这个。 [ActiveRecord Firebird Adapter] [1]

[1]:https://github.com/rowland/activerecord-fb-adapter我使用它将我的本地rails应用程序与其他生产服务器数据库连接,不要忘记添加可帮助您通过rails app访问数据库的模型。 goodluck,希望它有所帮助。

答案 1 :(得分:2)

您可以为同一个表使用两个模型,一个连接到生产数据库,另一个连接到开发数据库。

假设您的连接参数位于变量$production$development

您还必须调整代码以了解要使用的模型。

class Table1 < ActiveRecord::Base  
 establish_connection($production)
 self.table_name = 'table1' 
end

class Table1test < ActiveRecord::Base  
 establish_connection($development)
 self.table_name = 'table1' 
end

答案 2 :(得分:1)

对于我的应用程序,我使用这个宝石

https://github.com/thiagopradi/octopus

有很好的文档和示例。

如果您使用establish_connection,则会遇到连接问题。