我正在使用PosgreSQL适配器连接到Vertica数据库,该数据库主要与PostgreSQL兼容,但不支持client_min_messages等选项(尽管PGconn.connect
中没有出现,但仍然传递给database.yml
) 。我已经为ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
制作了一个快速而又脏的猴子补丁,但问题是我想在延迟加载AR中的所有内容并且在我的补丁后读取原始文件。
如果我在猴子补丁的顶部添加require 'active_record/connection_adapters/postgresql_adapter'
,那么ActiveRecord会尝试建立连接并失败。是否可以改变这种行为以使猴子补丁工作,或者我应该编写一个完整的连接适配器?
答案 0 :(得分:4)
您可以将代码挂钩到railties初始化。包括来自我的宝石multi_config的样本:
module <YourModule>
# Railtie subclass for the gem/plugin
class Railtie < Rails::Railtie
# Railtie initializer method
initializer '<your_plugin>.active_record' do
# When active_record is loaded, only then run this.
ActiveSupport.on_load :active_record do
# Hook your code here. For .e.g.
ActiveRecord::Base.send(:include, <YourPluginModule>)
end
end
end
end