试图运行我的config.ru时,我遇到了一个奇怪的错误,无法调试,称为“无接受者”错误。
完整的错误信息如下:
eventmachine.rb:572:in `start_tcp_server': no acceptor (RuntimeError)
有人知道这个错误是什么意思吗?谢谢。
正如 @Fivell 所说,我认为问题在于你还有一个之前的 thin
实例仍在运行。但我建议不要在另一个端口上启动它,而是杀死之前的实例。像这样做应该可以解决问题(我在这里重新创建了这个问题,所以这是我端上的真实输出):
telemachus caps $ ps ax | grep ruby
153 ?? S 7:52.18 ruby /usr/local/bin/djsd
15801 ?? S 0:00.40 ruby caps.rb # this is our problem, get it's PID
15973 s000 S+ 0:00.00 grep ruby
telemachus caps $ kill -9 15801 # thin needs -9 - hard to kill
telemachus caps $ ps ax | grep ruby
153 ?? R 7:52.86 ruby /usr/local/bin/djsd
16057 s000 S+ 0:00.00 grep ruby
根据您启动应用程序的方式,您可能需要 grep
不同的内容(例如,如果您使用了 shotgun
或 rackup
)。
我认为问题在于使用的端口已被绑定(可能是先前启动了您的应用程序)。尝试更改端口。
rackup config.ru -p port #default port is 9292 change to something else
或者如果您使用轻量级
thin start -p port -a 0.0.0.0 -R config.ru #default port is 8080 change to something else
尽管没有僵尸进程并且端口未绑定,但我仍然遇到了这个错误。
这个可以正常工作:
thin -p9292 start
但这并不:
rackup