Hyperstack - это изоморфная структура, в которой один и тот же код может выполняться на стороне сервера или клиента.Таким образом, существуют конкретные случаи, когда в зависимости от того, где выполняется какой-то фрагмент кода (на стороне сервера или клиента), должны выполняться разные вещи (синхронизация клиента и т. Д.).
Проблема заключается в том, что при проверке по умолчанию используется
defined?(Rails::Server)
зависит от используемого веб-сервера и окружающей среды.
Например, я работаю на Puma (в докере для разработки и на сервере Ubuntu для работы) и даже в этом случае определяется? (Rails :: Server) отлично работает в разработке, но не в производстве.Это показывает, что обнаружение выполнения сервера зависит не только от фактического сервера, на котором вы работаете, но также и от метода, используемого для его запуска (запуск ex-rails s VS puma)
Дополнительную информацию можно найти здесь:
Определить, было ли приложение запущено как HTTP-сервер или нет (задача rake, rconsole и т. Д.)
https://gitter.im/ruby-hyperloop/chat?at=59d60f2201110b72317cd61c
https://hyperstack -org.slack.com / archives / CHRQ5U8HL / p1557262851049900
Существует ли стандартный способ проверить, что-то вRails запускает на сервере процесс / поток (не в браузере, не в каком-то виде клиент, консоль, миграцию, задачу rake и т. Д.), Не полагаясь на какой-то хак, чтобы определить или объявить, на каком сервере мы развертываем (puma, thin, nginx и т. Д.).)