[Mongrel] mongrel startup fails now: already initialized constant OPTIONS

Stephen Bannasch stephen.bannasch at deanbrook.org
Thu Nov 15 01:59:31 EST 2007

>On Nov 13, 2007 3:29 PM, Stephen Bannasch 
><stephen.bannasch at deanbrook.org> wrote:
>> I updated to ruby 1.8.6p111 last night and updated some gems and now
>> mongrel doesn't work
>IIRC, if you update ruby, you're supposed to reinstall your gems -- 
>especially those with C components. (You'll probably want to update 
>mysql, too.) Something about libraries and linking...?

Eric Hodel (who is coordinating rubgems) doesn't think I should have to do that ...

At 6:02 PM -0800 11/13/07, Eric Hodel wrote:
>I've never heard of this before, and I've been using gems for a long 
>time.  I've never reinstalled my gems when upgrading ruby.  I've used 
>C components from ruby 1.8.2 with 1.8.6.
>If you do have to recompile, this is a bug in either Ruby or the 
>extension because something changed incompatibly.  Probably the 
>extension though.

But I think there is something wrong with my local gems. I fixed the problem by removing all the versions of one gem that should have NOTHING to do with mongrel or rails ???

The problem occurs with a rails 1.2.5 app as simple as this:

  $ rails test125
  $ cd rails125
  $ script/server

In fact it also occurs when I create new apps using rails version 1.2.0, 1.2.1, 1.2.3, 1.2.4, and 1.2.5.

Mongrel uses a gem that Zed wrote called gem_plugin.

I put a break on the line that requires the dependant gems for mongrel:


Here's the line of code:

  require File.join(gem_dir, "lib", gem.name, "init.rb")

This is called from line 231 of mongrel's configurator.rb:


In my simple 1.2.5 test app here were the sequential values for gem_dir:


These represent the root path to the gem that is being loaded. An actual full path looks like this:


Of course there are some strange entries there!

This is what I have installed:

mongrel (1.1.1, 1.0.1, 1.0,
    A small fast HTTP library and server that runs Rails, Camping, Nitro
    and Iowa apps.

mongrel_cluster (1.0.5, 1.0.4, 1.0.3, 1.0.2, 0.2.1, 0.2.0)
    Mongrel plugin that provides commands and Capistrano tasks for
    managing multiple Mongrel processes.

seesaw (0.2.5)
    Ripple-restart a mongrel cluster with no downtime

So it's pretty strange that mongrel-cluster-1.0.2 and mongrel 1.0 are being required.

Also the duplication doesn't seem right

The crash happens when I let the debugger continue after that last require of ruport (??!!).

OK -- so I delete all the ruport gems I have installed ... and it works ?!?!

*** Here's what the same tracing shows on my now working system (for just what reason I don't yet know).

$ rdebug script/server.rb

[I made a copy of  script/server and renamed it script/server.rb so rdebug would start it from the command line]

set a breakpoint in gem_plugin on the line that require's the dependant gems:

(rdb:1) b /usr/local/lib/ruby/gems/1.8/gems/gem_plugin-0.2.3/lib/gem_plugin.rb:134

Then let the program run in the debugger:

(rdb:1) cont

I get this printed:

=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on
=> Call with -d to detach
=> Ctrl-C to shutdown server

then at the first break gem_plugin requires:


and at the second break:


this then gets printed:

** Starting Mongrel listening at
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins

and then at the third break mongrel 1.0 is required:


and this is printed:

** Signals ready.  TERM => stop.  USR2 => restart.  INT => stop (no restart).
** Rails signals registered.  HUP => reload (without restart).  It might not work well.
** Mongrel 1.1.1 available at
** Use CTRL-C to stop.

and the whole thing is working ????

How did ruport ever get on that list?

More information about the Mongrel-users mailing list