Есть ли способ отключить консольные сообщения от очереди сообщений Hyperstack?

#ruby-on-rails #ruby #opalrb #hyperstack

#ruby-on-rails #ruby #opalrb #hyperstack

Вопрос:

В Hyperstack каждое изменение состояния попадает в очередь сообщений через механизм websocket для информирования каждого клиента приложения об изменениях состояния модели / приложения. Таким образом, если вы обновляете модель из сеансов моего браузера, все остальные, подключенные в данный момент, могут видеть ее в своем сеансе (при наличии необходимых разрешений).

Это даже делается из консольных «сеансов». Вы меняете модель с консоли Rails, и изменения автоматически распространяются на все подключенные веб-клиенты.

Для этого часть веб-приложения должна быть работоспособной (т. Е. сервер rails должен быть запущен).

Проблема в том, что есть две ситуации, когда вы можете не захотеть, чтобы обновления консоли распространялись на клиент:

  1. когда сервер rails по какой-либо причине не работает, и вы хотите взаимодействовать с приложением через его консоль (пока сервер rails снова не заработает)

  2. Вы хотите выполнять пакетные обновления с помощью задач консоли или rake и не хотите накладных расходов на информирование клиентов.

Есть ли способ быстро отключить обмен сообщениями с консоли или какой-либо метод переключения для этой цели?

Ответ №1:

Если сервер rails не запущен, он не будет пытаться отправлять сообщения (однако см. Примечание в конце)

Но интересен случай с задачей rake, которую вы хотите запустить, пока сервер включен. Я не думаю, что существует какой-либо опубликованный способ отключить нажатие «удаленный процесс -> сервер», но этот патч выполнит то же самое:

 module Hyperstack 
  def self.send_to_server(*args) 
    # drop the message on the floor
  end
end
  

Просто вставьте это в задачу rake.

Что касается сервера, который «не работает», единственный случай, который не работает, — это если сервер на самом деле «включен», но просто никогда не отвечает. Смотрите https://github.com/hyperstack-org/hyperstack/issues/144 подробнее. Если вы пытаетесь отладить проблему с сервером, то тот же патч, описанный выше, поможет, пока эта проблема не будет устранена.