Ruby on rails Rails 5.2多数据库连接问题

Ruby on rails Rails 5.2多数据库连接问题,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我们发现了一些用于创建具有多个数据库连接的Rails应用程序的模式(例如: 我们使用的模式如下(实际示例): 很明显,这个输出(虽然不是预期的)实际上就是发生的情况,IcmTask从ActiveRecord::Base继承了它的连接,而不是按照预期/预期从IcmDbBase继承 我们正在运行Rails 5.2.3和Ruby 2.6.4 更奇怪的是,如果我将日志放入我们的web服务器(puma 4.3.0),则IcmTask的连接配置与IcmDbBase的预期匹配,并且一切正常 这里有什么明显的问

我们发现了一些用于创建具有多个数据库连接的Rails应用程序的模式(例如:

我们使用的模式如下(实际示例):

很明显,这个输出(虽然不是预期的)实际上就是发生的情况,IcmTask从ActiveRecord::Base继承了它的连接,而不是按照预期/预期从IcmDbBase继承

我们正在运行Rails 5.2.3和Ruby 2.6.4

更奇怪的是,如果我将日志放入我们的web服务器(puma 4.3.0),则IcmTask的连接配置与IcmDbBase的预期匹配,并且一切正常


这里有什么明显的问题吗?无论我们在rails控制台内做了什么尝试,我们都无法让它像预期的那样继承此模型的连接。

结果表明,Innheep gem是直接重写此连接继承行为的(仅通过安装它)因此,当我删除gem时,它的行为与预期的一样。

结果表明,Innekeeper gem会立即覆盖此连接继承行为(仅通过安装它),因此当我删除gem时,它的行为与预期的一样

# models/icm_db_base.rb
class IcmDbBase < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :icm_production
end
# models/icm_task.rb
class IcmTask < IcmDbBase
... model code here
end
Loading development environment (Rails 5.2.3)
2.6.4 :001 > IcmTask.connection_config
=> DATABASE CONNECTION CONFIG FOR ActiveRecord::Base (DB #1)

2.6.4 :002 > IcmTask.superclass
 => IcmDbBase(abstract) 

2.6.4 :003 > IcmDbBase.connection_config
 => DATABASE CONNECTION CONFIG FOR IcmDbBase (DB #2)