Rails应用程序仅在通过Unicorn运行时才会出错

时间:2013-03-01 13:46:57

标签: ruby-on-rails-3.2 unicorn

我处于不幸的位置,必须配置一台机器来运行多个Rails应用程序。最初这台机器是用Nginx,rvm和Passenger设置的。必须配置多个独立的乘客似乎非常痛苦,这感觉就像一个黑客。我只是想让这个应用程序启动并运行,所以我现在要通过另一个端口(8080)与Unicorn一起运行它。我有哪些?没有经验。

我的应用程序有一个小帮手,可以检查移动设备是否正在访问该站点,然后提供一组不同的视图。这个帮助器中只有一个puts语句作为调试行。

当通过Unicorn运行时,puts行barfs:

Errno::EIO (Input/output error - <STDOUT>):

我能想到的是它无法写入STDOUT。我之前从未在puts行看过Rails应用程序保释金。当然它应该使用记录器,但是当它在其他地方没有出现这个问题时,Unicorn中的这一行有什么问题。

2 个答案:

答案 0 :(得分:2)

EIO错误表示进程正在尝试写入TTY,但该TTY现已消失。您可能从终端启动了Unicorn,让它守护进程然后退出终端。设置stderr_path有帮助,因为它将stderr(也可能是stdout?)重定向到文件。

但至于Phusion Passenger:您不必再设置多个独立乘客了。自Phusion Passenger 4以来,它支持多个Rubies。

答案 1 :(得分:1)

您的config / unicorn.rb中必须有stderr_path行。并且该文件必须由unicorn进程写入