Heroku FlyingSphinx Необходима конфигурация для ThinkingSphinx :: Configuration.instance.controller.running? - PullRequest
0 голосов
/ 19 июня 2020

Мы портировали наше приложение Rails 5.2 на Heroku и смогли получить почти все, что работает с FlyingSphinx.

Поиск и индексация работают хорошо, но для удобства пользователей мы стараемся сообщить им, когда демон не работает или выполняется повторная индексация.

Раньше мы могли использовать

ThinkingSphinx::Configuration.instance.controller.running?

Но это всегда возвращает false на Heroku, даже если демон запущен.

Наш 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

Предложения?

1 Ответ

1 голос
/ 20 июня 2020

Ах, я не просил об этом раньше, но это определенно возможно:

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

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

Когда это вызывается локально, он проверяет демон через файл pid, но когда он вызывается приложение Heroku, использующее Flying Sphinx, обращается к API Flying Sphinx, чтобы получить текущее состояние. Следовательно, важно запускать вызов require только для сред, размещенных на Heroku - нет смысла иметь локальные / тестовые среды, вызывающие Flying Sphinx API.

Настройка местоположения файлов / pid в средах Heroku / Flying Sphinx в основном не собираюсь ничего делать, потому что Flying Sphinx все равно перезаписывает их, чтобы соответствовать стандартизированному подходу на своих серверах. Исключения относятся к стоп-файлам / исключениям / et c, и соответствующие файлы загружаются в Flying Sphinx, чтобы демон мог быть настроен соответствующим образом.

...