1

不幸的是,我不得不配置一台机器来运行多个 Rails 应用程序。最初机器是用 Nginx 和 rvm 和Passenger 设置的。必须配置多个独立的Passengers 似乎很痛苦,而且感觉就像一个黑客。我只是希望这个应用程序能够启动并运行,所以我现在将通过一个不同的端口(8080)与 Unicorn 一起运行它。我有哪个?没有经验。

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

当穿过独角兽时,这puts条线会出现:

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

我能想到的只是它无法写入 STDOUT。我以前从未见过 Rails 应用程序在puts排队时保释。当然它可能应该使用记录器,但是当 Unicorn 中的这条线在其他地方没有这个问题时,它有什么问题。

4

2 回答 2

2

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

但是对于 Phusion 乘客:您不必再设置多个独立乘客。从 Phusion Passenger 4 开始,它支持多个红宝石。

于 2013-03-14T11:19:37.037 回答
1

你的 config/unicorn.rb 中必须有stderr_path一行。并且该文件必须可由独角兽进程写入

于 2013-03-01T13:57:56.273 回答