Ruby on rails Rails应用程序中的Monkey修补数据库适配器

Ruby on rails Rails应用程序中的Monkey修补数据库适配器,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在使用PosgreSQL适配器连接Vertica数据库,该数据库主要与PostgreSQL兼容,但不支持客户端消息等选项,尽管database.yml中没有客户端消息,但这些消息仍会传递给PGconn.connect。我已经为ActiveRecord::ConnectionAdapters::PostgreSQLAdapter制作了一个快速而肮脏的monkey修补程序,但问题是,我猜AR中的所有内容都在延迟加载,原始文件在我的修补程序之后读取 如果我在monkey补丁的顶部添加require

我正在使用PosgreSQL适配器连接Vertica数据库,该数据库主要与PostgreSQL兼容,但不支持客户端消息等选项,尽管database.yml中没有客户端消息,但这些消息仍会传递给PGconn.connect。我已经为ActiveRecord::ConnectionAdapters::PostgreSQLAdapter制作了一个快速而肮脏的monkey修补程序,但问题是,我猜AR中的所有内容都在延迟加载,原始文件在我的修补程序之后读取


如果我在monkey补丁的顶部添加require“active\u record/connection\u adapters/postgresql\u adapter”,那么ActiveRecord会尝试建立连接,但失败。是否可以更改此行为以使monkey修补程序正常工作,或者我应该只编写一个完整的连接适配器?

您可以将代码挂接到railties初始化。包括我的宝石样品:


您可以将代码挂接到railties初始化。包括我的宝石样品:


你有完整的模块来完成这个任务吗?Hi@synapse,在将postgres升级到12版本后,Rails3面临同样的问题。你能告诉我你是如何解决这个问题的吗?你有完成这个任务的完整模块吗?Hi@synapse,在将postgres升级到12版本后,Rails3也面临同样的问题。你能告诉我你是怎么解决的吗?
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