>On Nov 13, 2007 3:29 PM, Stephen Bannasch 
><[EMAIL PROTECTED]> 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:

/usr/local/lib/ruby/gems/1.8/gems/gem_plugin-0.2.3/lib/gem_plugin.rb:134

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:

  GemPlugin::Manager.instance.load(load_settings)

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

  /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.2
  /usr/local/lib/ruby/gems/1.8/gems/seesaw-0.2.5
  /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0
  /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.2
  /usr/local/lib/ruby/gems/1.8/gems/seesaw-0.2.5
  /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0
  /usr/local/lib/ruby/gems/1.8/gems/ruport-0.8.10

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

/usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.2/lib/mongrel_cluster/init.rb

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.

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 http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

then at the first break gem_plugin requires:

/usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.2/lib/mongrel_cluster/init.rb

and at the second break:

/usr/local/lib/ruby/gems/1.8/gems/seesaw-0.2.5/lib/seesaw/init.rb

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:

/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0/lib/mongrel/init.rb

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?
_______________________________________________
Mongrel-users mailing list
Mongrel-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-users

Reply via email to