我处于不幸的位置,必须配置一台机器来运行多个Rails应用程序。最初这台机器是用Nginx,rvm和Passenger设置的。必须配置多个独立的乘客似乎非常痛苦,这感觉就像一个黑客。我只是想让这个应用程序启动并运行,所以我现在要通过另一个端口(8080)与Unicorn一起运行它。我有哪些?没有经验。
我的应用程序有一个小帮手,可以检查移动设备是否正在访问该站点,然后提供一组不同的视图。这个帮助器中只有一个puts
语句作为调试行。
当通过Unicorn运行时,puts
行barfs:
Errno::EIO (Input/output error - <STDOUT>):
我能想到的是它无法写入STDOUT。我之前从未在puts
行看过Rails应用程序保释金。当然它应该使用记录器,但是当它在其他地方没有出现这个问题时,Unicorn中的这一行有什么问题。
答案 0 :(得分:2)
EIO错误表示进程正在尝试写入TTY,但该TTY现已消失。您可能从终端启动了Unicorn,让它守护进程然后退出终端。设置stderr_path有帮助,因为它将stderr(也可能是stdout?)重定向到文件。
但至于Phusion Passenger:您不必再设置多个独立乘客了。自Phusion Passenger 4以来,它支持多个Rubies。
答案 1 :(得分:1)
您的config / unicorn.rb中必须有stderr_path
行。并且该文件必须由unicorn进程写入