ruby-on-rails – 如何检测rails应用程序是否在Unicorn下运行?
发布时间:2020-12-17 02:42:34 所属栏目:百科 来源:网络整理
导读:我需要在我的Rails应用程序中设置与外部服务的连接.我在初始化器中执行此操作.问题是服务库使用线程传递(我需要,因为我不能让它停止请求),但是Unicorn生命周期会导致线程被杀死而工作者永远不会看到它.一种解决方案是在每个请求上调用新连接,但这不必要地浪
我需要在我的Rails应用程序中设置与外部服务的连接.我在初始化器中执行此操作.问题是服务库使用线程传递(我需要,因为我不能让它停止请求),但是Unicorn生命周期会导致线程被杀死而工作者永远不会看到它.一种解决方案是在每个请求上调用新连接,但这不必要地浪费.
最佳解决方案是在unicorn配置中的after_fork块中设置连接.问题是不会在独角兽之外调用,这意味着我们无法在开发/测试环境中测试它. 所以问题是,确定Rails应用程序是否在Unicorn(主服务器或工作进程)下运行的最佳方法是什么? 解决方法
在Rails中可以访问一个环境变量(我知道它存在于3.0和3.1中),检查env [‘SERVER_SOFTWARE’]的值.您可以将正则表达式或字符串与该值进行比较,以确定您正在运行的服务器.
我的管理员中有一个模板,它通过env变量并吐出其内容. Unicorn 4.0.1 env['SERVER_SOFTWARE'] => "Unicorn 4.0.1" rails服务器(webrick) env['SERVER_SOFTWARE'] => "WEBrick/1.3.1 (Ruby/1.9.3/2011-10-30)" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |