gpt4 book ai didi

ruby-on-rails - 如何检测 Rails 应用程序是否在 Unicorn 下运行?

转载 作者:行者123 更新时间:2023-12-05 00:02:26 27 4
gpt4 key购买 nike

我需要在我的 Rails 应用程序中设置到外部服务的连接。我在初始化程序中执行此操作。问题是服务库使用线程传递(我需要它,因为我不能让它阻塞请求),但是 Unicorn 生命周期导致线程被杀死并且工作人员永远不会看到它。一种解决方案是对每个请求调用一个新连接,但这是不必要的浪费。

最佳解决方案是在 unicorn 配置中的 after_fork 块中设置连接。问题在于它不会在 unicorn 之外被调用,这意味着我们无法在开发/测试环境中对其进行测试。

所以问题是,确定 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)"

关于ruby-on-rails - 如何检测 Rails 应用程序是否在 Unicorn 下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8059188/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com