2016-10-04 64 views
1

我有一个数据库托管在开发环境和生产环境中。我正在写一个基于请求中的参数的api将在环境或生产数据库中写入表中。运行时连接到两个不同的ruby数据库

发展:
适配器:mysql2
数据库:DB1
用户名:root
密码:
超时:5000
主持人:ABCD
我已经database.yaml文件放在这两个项目在 pool:5
port:1234

生产: 适配器:mysql2 数据库:DB1 用户名:root
密码:
超时:5000
主持人:ABCE
池:5
端口:1234

这是我的活动记录:

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

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

+0

你有在每个环境中运行的应用程序吗?为什么不写你的API发布到不同的应用程序取决于所述参数? –

+0

编号应用程序仅在一个环境中运行。我想先推向开发环境并进行测试。然后将其称为生产数据库。 – NooB8374

+1

你没有。在导轨服务器启动时,通常会读取导轨中的配置。虽然可以有[多个数据库连接](http:// stackoverflow。com/questions/6122508/connecting-rails-3-1-with-multiple-databases) - 你最可能想要的是一个临时环境(镜像生产环境),这通常是通过创建一个单独的rails应用程序并通过使用'ENV [ 'DATABASE_URL']'。 – max

回答

1

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

假设您的连接参数在变量$production$developent中。

您还需要修改代码以知道使用哪个模型。

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

class table1test < ActiveRecord::Base 
establish_connection($developent) 
self.table_name = 'table1' 
end 
+0

谢谢,这个工程。 – NooB8374

3

去这个吧。 [ActiveRecord Firebird Adapter] [1]

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