加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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)"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读