1

我正在使用 PosgreSQL 适配器连接到 Vertica 数据库,该数据库主要与 PostgreSQL 兼容,但不支持诸如 client_min_messages 之类的选项(PGconn.connect尽管不存在于 中,但仍然传递给它database.yml)。我已经为它制作了一个快速而肮脏的猴子补丁,ActiveRecord::ConnectionAdapters::PostgreSQLAdapter但问题是我猜 AR 中的所有内容都是延迟加载的,并且在我的补丁之后读取了原始文件。

如果我require 'active_record/connection_adapters/postgresql_adapter'在猴子补丁的顶部添加,那么 ActiveRecord 会尝试建立连接并失败。是否可以改变这种行为以使猴子补丁工作,或者我应该只编写一个成熟的连接适配器?

4

1 回答 1

4

您可以将代码挂钩到 railties 初始化。包括来自我的 gem 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
于 2012-11-07T11:48:27.653 回答