[Mongrel] mongrel startup fails now: already initialized constant OPTIONS
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
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
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, 0.3.13.4)
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.
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:
I get this printed:
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> 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 0.0.0.0:3000
** 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 0.0.0.0:3000
** 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