Hyperstack是一个同构框架,相同的代码可以在服务器端或客户端运行。因此,在某些特定情况下,根据执行某些代码的位置(服务器或客户端),应该完成不同的事情(客户端同步等)。
问题是依赖默认检查是否
defined?(Rails::Server)
取决于您正在运行的网络服务器和封闭环境。
例如,我在 puma 上运行(在 docker 中进行开发,在 Ubuntu 服务器中进行生产),即使在这种情况下定义?(Rails::Server)在开发中运行良好,但在生产中运行不正常。这表明服务器执行检测不仅取决于您正在运行的实际服务器,还取决于用于启动它的方法(例如 rails s VS puma start)
可以在此处找到其他信息:
https://gitter.im/ruby-hyperloop/chat?at=59d60f2201110b72317cd61c
https://hyperstack-org.slack.com/archives/CHRQ5U8HL/p1557262851049900
是否有一种标准方法可以检查 Rails 中的某些内容是否在服务器进程/线程上执行(而不是在浏览器、某种客户端、控制台、迁移、rake 任务等),而不依赖于一些黑客来识别或声明我们的服务器部署在(puma、thin、nginx 等)上?