检查您是否在Rails Server流程中满足Hyperstack的需求的最准确方法是什么?



Hyperstack是同构框架,同一代码可以运行服务器或客户端端。因此,在某些情况下,应根据某些代码执行(服务器或客户端(的位置(客户端同步等(。

问题是依靠默认检查

是否
defined?(Rails::Server) 

取决于您正在运行的网络服务器和封闭环境。

例如,我在PUMA上运行(在Docker进行开发和Ubuntu Server中进行生产(,甚至在这种情况下定义了吗?(Rails :: Server(在开发方面效果很好,但在生产中效果不佳。这表明服务器执行检测不仅取决于您正在运行的实际服务器,还取决于用于启动它的方法(E.X. Rails vs puma start(

其他信息可以在此处找到:

  1. 检测应用程序是否以HTTP服务器的启动(Rake Task,rconsole等(

  2. https://gitter.im/ruby-hyperloop/chat?at=59d6d60f2201110b72317cd61c

  3. https://hyperstack-org.slack.com/archives/chrq5u8hl/p1557262851049900

是否有一种标准方法来检查导轨中的某些内容是否在服务器过程/线程(不在浏览器,某种客户端,控制台,迁移,耙任务等(上执行,而无需依靠某些黑客攻击来识别或声明我们在(puma,thin,nginx等(上部署了哪些服务器?

您可以使用Ruby_engine Guard查看代码是否在Opal中运行。

if RUBY_ENGINE == 'opal'
    # I am on the client
end

这在同构模型中非常有用,可以将模型方法的一部分排除在客户端上的现有。对于使用客户端代码中没有意义的添加的GEM方法也非常有用。

最新更新