ThinkingSphinx::Configuration.instance.controller.running 需要 Heroku FlyingSphinx 配置吗?

Heroku FlyingSphinx Configuration needed for ThinkingSphinx::Configuration.instance.controller.running?

我们将 Rails 5.2 应用程序移植到 Heroku,并且能够几乎 一切都可以与 FlyingSphinx 一起使用。

搜索和索引工作正常,但为了方便我们的用户,我们尽量让他们知道守护程序何时停止服务或我们是否正在重新编制索引。

以前,我们可以使用

ThinkingSphinx::Configuration.instance.controller.running?

但是在 Heroku 上这总是 returns false 即使守护进程是 运行。

我们的 thinking_sphinx.yml 没有指定文件位置或 pid 所在位置的信息,所以我怀疑这可能是问题所在;但是,我找不到任何地方可以解释在 thinking_sphinx.yml 中为 Heroku/FlyingSphinx 使用什么,如果有必要的话 https://freelancing-gods.com/thinking-sphinx/v3/advanced_config.html.

我们的 thinking_sphinx.yml 现在看起来像这样:

common: &common
  mem_limit: 40M
  64bit_timestamps: true

development:
  <<: *common
test:
  <<: *common
  mysql41: 9307
  quiet_deltas: true
staging:
  <<: *common
  quiet_deltas: true
production:
  <<: *common
  version: '2.2.11'
  quiet_deltas: true

建议?

啊,我以前没有收到过这个请求,但绝对有可能:

require "flying_sphinx/commands" if ENV["FLYING_SPHINX_IDENTIFIER"]

ThinkingSphinx::Commander.call(
  :running,
  ThinkingSphinx::Configuration.instance,
  {}
)    

当它在本地调用时,它会通过 pid 文件检查守护进程,但是当它在使用 Flying Sphinx 的 Heroku 应用程序上调用时,它会与 Flying Sphinx API 对话以获取 运行宁州。因此,仅 运行 require 调用 Heroku 托管环境很重要 - local/test envs 调用 Flying Sphinx API.

毫无意义

在 Heroku/Flying Sphinx 环境中设置 file/pid 位置大多不会做任何事情,因为 Flying Sphinx 无论如何都会覆盖这些以匹配其服务器上的标准化方法。 stopfiles/exceptions/etc 例外,那些相应的文件已上传到 Flying Sphinx,因此可以适当配置那里的守护程序。