rails,activerecord,获取当前连接规范

时间:2011-12-29 20:42:37

标签: ruby-on-rails activerecord

我正在编写代码,将一些数据从一个数据库迁移到另一个数据库,覆盖目标中的一些数据。它使用ActiveRecord,因为它已经与使用AR的Rails应用程序相关联。

由于某些数据会被覆盖,我想提供一个确认提示,告诉用户用于目标数据库连接的实际连接字典/规范。你知道,适配器,主机,用户名,密码,数据库,你在database.yml中列出的东西。

我可以将模型用于我正在编写的内容并要求SomeModel.connection ....但似乎根本没有API可以从实时连接对象中获取实际的连接规范。

真的?我错过了什么吗?还有其他任何想法,甚至是无证件的api?

3 个答案:

答案 0 :(得分:66)

与您在模型上调用connection的方式类似,您可以在ActiveRecord :: Base上调用connection

ActiveRecord::Base.connection_config

Look at the docs for ActiveRecord::Base,因为还有其他方法可以让您获取/设置有关连接的属性。

答案 1 :(得分:9)

答案是SomeModel.connection_config

答案 2 :(得分:0)

Rails通过将逻辑委派给不同的受支持适配器来根据要使用的DBMS在内部实例化新连接。该信息在构造函数中设置的@connection_adapters实例变量中:

ActiveRecord::Base.connection.instance_variable_get(:@connection_parameters)

区别是ActiveRecord::Base.connection_config返回一个包含已为Rails目的“映射”的数据的哈希,您可以通过执行此操作轻松实例化新连接

PG.connect(ActiveRecord::Base.connection.instance_variable_get(:@connection_parameters))