在Rails应用程序中修补猴子数据库适配器

时间:2012-11-07 11:34:20

标签: ruby-on-rails ruby ruby-on-rails-3

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

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

1 个答案:

答案 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