使用Mongrel_rails在Rails应用程序上启动ruby时为什么会出错

时间:2020-03-06 14:38:46  来源:igfitidea点击:

为什么在尝试使用Rails应用程序启动ruby时出现以下错误

mongrel_rails start

C:\RailsTest\cookbook2>mongrel_rails start
** WARNING: Win32 does not support daemon mode.
** Daemonized, any open files are closed.  Look at log/mongrel.pid and log/mongr
el.log for info.
** Starting Mongrel listening at 0.0.0.0:3000
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../lib/mongrel/t
cphack.rb:12:in `initialize_without_backlog': Only one usage of each socket addr
ess (protocol/network address/port) is normally permitted. - bind(2) (Errno::EAD
DRINUSE)
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/tcphack.rb:12:in `initialize'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:93:in `new'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:93:in `initialize'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/configurator.rb:139:in `new'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/configurator.rb:139:in `listener'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mon
grel_rails:99:in `cloaker_'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/configurator.rb:50:in `call'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/configurator.rb:50:in `initialize'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mon
grel_rails:84:in `new'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mon
grel_rails:84:in `run'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/command.rb:212:in `run'
        from c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mon
grel_rails:281
        from c:/ruby/bin/mongrel_rails:19:in `load'
        from c:/ruby/bin/mongrel_rails:19

解决方案

我自己不在Windows上使用杂种,但我猜该错误与Linux的"使用端口"错误等效。我们是否正在尝试将服务器绑定到已经监听了其他端口的端口上?

我们已经有一个进程在端口3000(mongrel的默认端口)上进行侦听。

尝试:

mongrel_rails start -p 3001

看看是否收到类似的错误。

如果我们要安装多个Rails应用程序,则需要将每个杂种分配给一个单独的端口,并相应地编辑apache conf。

如果我们不打算这样做,则杀死所有杂项的最直接方法是打开Windows任务管理器并杀死所有"红宝石"进程。

请注意,如果我们安装了杂种作为自动启动的服务

mongrel_rails install::service ...

...红宝石过程将自动重新生成。在这种情况下,我们将必须通过Windows Services面板编辑过程属性。让我知道我们是否需要更多信息。

在Windows上,我发现了解决此问题的两种可能方法:

  • 解决方法:在另一个端口中启动Mongrel Web服务器
  • 解决方案:在任务管理器中找到ruby.exe进程并完成它