1

最近我们考虑使用从数据库进行一些搜索/读取操作。我们没有任何计划将我们所有的读取请求发送给奴隶。我们只想让我们的一些搜索查询命中从数据库

我尝试了几乎所有可用的 gem,octopus, octoshark, db-charmer, makara, knockoff但是它们都没有正常工作。

For example on Octopus (other gems too), 下面是个大问题

Octopus.using(:slave1) do User.first end.

这工作正常并使用“slave1”。

但不知道为什么以下不起作用。

Octopus.using(:slave1) do User.where(id: 1) end

这个没有使用 slave1,但它在主数据库上触发,我们的大多数搜索查询都是这种格式。

到现在还挺郁闷的。任何帮助将不胜感激。

4

2 回答 2

2

经过一番挣扎,我发现这User.where(id: 1)只是创建了一个活动记录关系,但查询是在octopus. 所以当我这样做时User.where(id: 1).to_a,神奇地一切都开始对我正常工作。

我尝试了其中大多数都使用这个技巧。我花了很多时间才弄清楚。

于 2017-04-03T10:28:55.090 回答
0

也许尝试直接在User模型中建立数据库连接?

class User < ActiveRecord::Base  
  octopus_establish_connection(db_url_to_slave)
  ..
 end

我们目前正在生产中使用 Octopus,我相当确定该where用例对我们有用:P

文档中的本节详细介绍了该方法,以防您需要更多信息。

于 2017-04-03T09:14:30.347 回答