[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[ANN] Thin 0.5.3 Purple Yogurt release

Marc-André Cournoyer

1/18/2008 5:23:00 PM

Hey all,

Version 0.5.3 (codename Purple Yogurt) of the fastest Ruby server is
out!

Thin is a Ruby web server that glues together 3 of the best Ruby
libraries in web history:
* the Mongrel parser: the root of Mongrel speed and security
* Event Machine: a network I/O library with extremely high
scalability, performance and stability
* Rack: a minimal interface between webservers and Ruby frameworks
Which makes it, with all humility, the most secure, stable, fast and
extensible Ruby web server
bundled in an easy to use gem for your own pleasure.

== What's new?

Welcome 2 new members to the Thin team (previously composed of me and
me):
* Kevin Williams http://www.almos...
* James Golick http://jamesg...

Small release for *nix users, but big one of windows users!

* win32 pre-compiled gem now available (send all your love to Kevin
for this one)
* Add prefix option to thin script to mount app under a given path.

If you're still not sure about trying Thin, here are a couple of
articles:
* http://glauche.de/2008/01/14/how-many-thin-server-instances...
* http://www.deze9.com/jp/blog/post?p=current-uptime-of-the-thin-server-proc...
* http://blog.rayngwf.com/2008/01/thin-ruby-web-server-that-is-r...
* http://glauche.de/2008/01/12/thin-nginx-w...

== Get it!

sudo gem install thin

Might take some time for the gem mirrors to be updated, try adding
--source http://code.macou... to the command if it doesn't work

If you installed a previous alpha version (if you have 0.5.3 already
installed)
uninstall it before: sudo gem uninstall thin

WARNING:
Thin is still alpha software, if you use it on your server you
understand the
risks that are involved.

== Contribute

If you're using Thin, let me know and I'll put your site on http://code.macou.../thin/users/

Thin is driven by an active community of passionate coders and
benchmarkers. Please join us, contribute
or share some ideas in Thin Google Group: http://groups.google.com/group/thin-r...

Also on IRC: #thin on freenode

Thanks to all the people who contributed to Thin, EventMachine, Rack
and Mongrel.

Marc-Andre Cournoyer
http://code.macou.../thin/


12 Answers

Steve Ross

1/19/2008 3:15:00 AM

0

This has been working so well on my Mac dev machine, I built it out on =20=

my RHEL server and started it with:

thin start -e production -p<some-big-number> -d

This is dropping it in where a mongrel was. Listening on a high number =20=

port.

I can go to http://rootdomain:<some-big-number> and there's my site. =20
However, I can't get to it using Apache's mod_proxy.

Killing the thin process and restarting the mongrel verifies that the =20=

proxy is set up right.

Any thoughts?

Thx


On Jan 18, 2008, at 9:22 AM, Marc-Andr=E9 Cournoyer wrote:

> Hey all,
>
> Version 0.5.3 (codename Purple Yogurt) of the fastest Ruby server is =20=

> out!
>
> Thin is a Ruby web server that glues together 3 of the best Ruby =20
> libraries in web history:
> * the Mongrel parser: the root of Mongrel speed and security
> * Event Machine: a network I/O library with extremely high =20
> scalability, performance and stability
> * Rack: a minimal interface between webservers and Ruby frameworks
> Which makes it, with all humility, the most secure, stable, fast and =20=

> extensible Ruby web server
> bundled in an easy to use gem for your own pleasure.
>
> =3D=3D What's new?
>
> Welcome 2 new members to the Thin team (previously composed of me =20
> and me):
> * Kevin Williams http://www.almos...
> * James Golick http://jamesg...
>
> Small release for *nix users, but big one of windows users!
>
> * win32 pre-compiled gem now available (send all your love to Kevin =20=

> for this one)
> * Add prefix option to thin script to mount app under a given path.
>
> If you're still not sure about trying Thin, here are a couple of =20
> articles:
> * http://glauche.de/2008/01/14/how-many-thin-server-instanc...
> best/
> * =
http://www.deze9.com/jp/blog/post?p=3Dcurrent-uptime-of-the-thin-...
ocess-behind
> * =
http://blog.rayngwf.com/2008/01/thin-ruby-web-server-that-is-r...
> * http://glauche.de/2008/01/12/thin-nginx-w...
>
> =3D=3D Get it!
>
> sudo gem install thin
>
> Might take some time for the gem mirrors to be updated, try adding
> --source http://code.macou... to the command if it doesn't work
>
> If you installed a previous alpha version (if you have 0.5.3 already =20=

> installed)
> uninstall it before: sudo gem uninstall thin
>
> WARNING:
> Thin is still alpha software, if you use it on your server you =20
> understand the
> risks that are involved.
>
> =3D=3D Contribute
>
> If you're using Thin, let me know and I'll put your site on =
http://code.macou.../thin/users/
>
> Thin is driven by an active community of passionate coders and =20
> benchmarkers. Please join us, contribute
> or share some ideas in Thin Google Group: =
http://groups.google.com/group/thin-r...
>
> Also on IRC: #thin on freenode
>
> Thanks to all the people who contributed to Thin, EventMachine, Rack =20=

> and Mongrel.
>
> Marc-Andre Cournoyer
> http://code.macou.../thin/
>
>


Marc-André Cournoyer

1/19/2008 3:57:00 AM

0

someone reported that the --user and --group options are not working : =
http://groups.google.com/group/thin-ruby/browse_thread/thread/a24...
380e/d796bf39b2b32d17

maybe you're experiencing the same issue. Can you check on w/ user is =20=

the thin process running?

On 18-Jan-08, at 10:15 PM, s.ross wrote:

> This has been working so well on my Mac dev machine, I built it out =20=

> on my RHEL server and started it with:
>
> thin start -e production -p<some-big-number> -d
>
> This is dropping it in where a mongrel was. Listening on a high =20
> number port.
>
> I can go to http://rootdomain:<some-big-number> and there's my site. =20=

> However, I can't get to it using Apache's mod_proxy.
>
> Killing the thin process and restarting the mongrel verifies that =20
> the proxy is set up right.
>
> Any thoughts?
>
> Thx
>
>
> On Jan 18, 2008, at 9:22 AM, Marc-Andr=E9 Cournoyer wrote:
>
>> Hey all,
>>
>> Version 0.5.3 (codename Purple Yogurt) of the fastest Ruby server =20
>> is out!
>>
>> Thin is a Ruby web server that glues together 3 of the best Ruby =20
>> libraries in web history:
>> * the Mongrel parser: the root of Mongrel speed and security
>> * Event Machine: a network I/O library with extremely high =20
>> scalability, performance and stability
>> * Rack: a minimal interface between webservers and Ruby frameworks
>> Which makes it, with all humility, the most secure, stable, fast =20
>> and extensible Ruby web server
>> bundled in an easy to use gem for your own pleasure.
>>
>> =3D=3D What's new?
>>
>> Welcome 2 new members to the Thin team (previously composed of me =20
>> and me):
>> * Kevin Williams http://www.almos...
>> * James Golick http://jamesg...
>>
>> Small release for *nix users, but big one of windows users!
>>
>> * win32 pre-compiled gem now available (send all your love to Kevin =20=

>> for this one)
>> * Add prefix option to thin script to mount app under a given path.
>>
>> If you're still not sure about trying Thin, here are a couple of =20
>> articles:
>> * =
http://glauche.de/2008/01/14/how-many-thin-server-instances...
>> * =
http://www.deze9.com/jp/blog/post?p=3Dcurrent-uptime-of-the-thin-...
ocess-behind
>> * =
http://blog.rayngwf.com/2008/01/thin-ruby-web-server-that-is-r...
>> * http://glauche.de/2008/01/12/thin-nginx-w...
>>
>> =3D=3D Get it!
>>
>> sudo gem install thin
>>
>> Might take some time for the gem mirrors to be updated, try adding
>> --source http://code.macou... to the command if it doesn't =20
>> work
>>
>> If you installed a previous alpha version (if you have 0.5.3 =20
>> already installed)
>> uninstall it before: sudo gem uninstall thin
>>
>> WARNING:
>> Thin is still alpha software, if you use it on your server you =20
>> understand the
>> risks that are involved.
>>
>> =3D=3D Contribute
>>
>> If you're using Thin, let me know and I'll put your site on =
http://code.macou.../thin/users/
>>
>> Thin is driven by an active community of passionate coders and =20
>> benchmarkers. Please join us, contribute
>> or share some ideas in Thin Google Group: =
http://groups.google.com/group/thin-r...
>>
>> Also on IRC: #thin on freenode
>>
>> Thanks to all the people who contributed to Thin, EventMachine, =20
>> Rack and Mongrel.
>>
>> Marc-Andre Cournoyer
>> http://code.macou.../thin/
>>
>>
>
>


Bob Hutchison

1/19/2008 4:43:00 AM

0


On 18-Jan-08, at 10:15 PM, s.ross wrote:

> I can go to http://rootdomain:<some-big-number> and there's my site.
> However, I can't get to it using Apache's mod_proxy.


Any luck with restarting or stop/start of apache?

With OS X 10.5 I'm doing that a lot now, never in 10.4 -- if anyone
knows what that's all about, do tell.

Cheers,
Bob

----
Bob Hutchison -- tumblelog at http://www.recurs...
Recursive Design Inc. -- weblog at http://www.recursiv...
http://www.rec... -- works on http://www.raconteur.info/cms-for-static-con...



Steve Ross

1/19/2008 6:42:00 AM

0

Got it up and running ... for a while. It's running as root/root and
I'm not certain why it was not responding to proxied requests, but
I'll have to track that down later. Here's the puzzler for right now.

I decided to use the sitealizer Rails plugin for this site and it
contains code such as:

def store_visits
begin
mutex = Mutex.new
mutex.lock
$visits.each do |env|
SiteTracker.create(
:user_agent => env['HTTP_USER_AGENT'],
:language => env['HTTP_ACCEPT_LANGUAGE'],
:path => env['PATH_INFO'],
:ip => env['REMOTE_ADDR'],
:referer => env['HTTP_REFERER']
)
end
open(File.dirname(__FILE__)+'/last_update','w'){|f| f.puts
Time.now.to_s}
mutex.unlock
rescue => e
RAILS_ENV == 'production' ? logger.info(e) : logger.debug(e)
ensure
mutex.unlock
end
end

This causes thin to crash as follows:

ThreadError (not owner):
/vendor/plugins/sitealizer/lib/sitealizer.rb:80:in `unlock'
/vendor/plugins/sitealizer/lib/sitealizer.rb:51:in `join'
/vendor/plugins/sitealizer/lib/sitealizer.rb:51:in `use_sitealizer'
/vendor/rails/actionpack/lib/action_controller/filters.rb:456:in
`send'
/vendor/rails/actionpack/lib/action_controller/filters.rb:456:in
`call'
/vendor/rails/actionpack/lib/action_controller/filters.rb:435:in
`call'
/vendor/rails/actionpack/lib/action_controller/filters.rb:637:in
`call_filter'
/vendor/rails/actionpack/lib/action_controller/filters.rb:619:in
`perform_action_without_benchmark'
/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
66:in `perform_action_without_rescue'
/usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
66:in `perform_action_without_rescue'
/vendor/rails/actionpack/lib/action_controller/rescue.rb:125:in
`perform_action'
/vendor/rails/actionpack/lib/action_controller/base.rb:473:in
`send'
/vendor/rails/actionpack/lib/action_controller/base.rb:473:in
`process_without_filters'
/vendor/rails/actionpack/lib/action_controller/filters.rb:624:in
`process_without_session_management_support'
/vendor/rails/actionpack/lib/action_controller/
session_management.rb:114:in `sass_old_process'
/vendor/plugins/haml/lib/sass/plugin.rb:116:in `process'
/vendor/rails/actionpack/lib/action_controller/base.rb:326:in
`process'
/vendor/rails/railties/lib/dispatcher.rb:39:in `dispatch'
/usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/rack/adapter/
rails.rb:52:in `serve_rails'
/usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/rack/adapter/
rails.rb:67:in `call'
/usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/thin/
connection.rb:30:in `process'
/usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/thin/
connection.rb:16:in `receive_data'
/usr/local/lib/ruby/gems/1.8/gems/eventmachine-0.10.0/lib/
eventmachine.rb:1056:in `event_callback'
/usr/local/lib/ruby/gems/1.8/gems/eventmachine-0.10.0/lib/
eventmachine.rb:224:in `run_machine'
/usr/local/lib/ruby/gems/1.8/gems/eventmachine-0.10.0/lib/
eventmachine.rb:224:in `run'
/usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/thin/server.rb:
55:in `listen!'
/usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/thin/server.rb:
44:in `start!'
/usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/bin/thin:85:in `start'
/usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/bin/thin:116:in `send'
/usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/bin/thin:116
/usr/local/bin/thin:19:in `load'
/usr/local/bin/thin:19

Any thoughts?

Thanks


On Jan 18, 2008, at 8:43 PM, Bob Hutchison wrote:

>
> On 18-Jan-08, at 10:15 PM, s.ross wrote:
>
>> I can go to http://rootdomain:<some-big-number> and there's my
>> site. However, I can't get to it using Apache's mod_proxy.
>
>
> Any luck with restarting or stop/start of apache?
>
> With OS X 10.5 I'm doing that a lot now, never in 10.4 -- if anyone
> knows what that's all about, do tell.
>
> Cheers,
> Bob
>
> ----
> Bob Hutchison -- tumblelog at http://www.recurs...
> Recursive Design Inc. -- weblog at http://www.recursiv...
> http://www.rec... -- works on http://www.raconteur.info/cms-for-static-con...
>
>
>


Marc-André Cournoyer

1/19/2008 2:46:00 PM

0

Thin runs in a single thread, no need for a mutex there.

On 19-Jan-08, at 1:42 AM, s.ross wrote:

> Got it up and running ... for a while. It's running as root/root and
> I'm not certain why it was not responding to proxied requests, but
> I'll have to track that down later. Here's the puzzler for right now.
>
> I decided to use the sitealizer Rails plugin for this site and it
> contains code such as:
>
> def store_visits
> begin
> mutex = Mutex.new
> mutex.lock
> $visits.each do |env|
> SiteTracker.create(
> :user_agent => env['HTTP_USER_AGENT'],
> :language => env['HTTP_ACCEPT_LANGUAGE'],
> :path => env['PATH_INFO'],
> :ip => env['REMOTE_ADDR'],
> :referer => env['HTTP_REFERER']
> )
> end
> open(File.dirname(__FILE__)+'/last_update','w'){|f| f.puts
> Time.now.to_s}
> mutex.unlock
> rescue => e
> RAILS_ENV == 'production' ? logger.info(e) : logger.debug(e)
> ensure
> mutex.unlock
> end
> end
>
> This causes thin to crash as follows:
>
> ThreadError (not owner):
> /vendor/plugins/sitealizer/lib/sitealizer.rb:80:in `unlock'
> /vendor/plugins/sitealizer/lib/sitealizer.rb:51:in `join'
> /vendor/plugins/sitealizer/lib/sitealizer.rb:51:in `use_sitealizer'
> /vendor/rails/actionpack/lib/action_controller/filters.rb:456:in
> `send'
> /vendor/rails/actionpack/lib/action_controller/filters.rb:456:in
> `call'
> /vendor/rails/actionpack/lib/action_controller/filters.rb:435:in
> `call'
> /vendor/rails/actionpack/lib/action_controller/filters.rb:637:in
> `call_filter'
> /vendor/rails/actionpack/lib/action_controller/filters.rb:619:in
> `perform_action_without_benchmark'
> /vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
> 66:in `perform_action_without_rescue'
> /usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
> /vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
> 66:in `perform_action_without_rescue'
> /vendor/rails/actionpack/lib/action_controller/rescue.rb:125:in
> `perform_action'
> /vendor/rails/actionpack/lib/action_controller/base.rb:473:in
> `send'
> /vendor/rails/actionpack/lib/action_controller/base.rb:473:in
> `process_without_filters'
> /vendor/rails/actionpack/lib/action_controller/filters.rb:624:in
> `process_without_session_management_support'
> /vendor/rails/actionpack/lib/action_controller/
> session_management.rb:114:in `sass_old_process'
> /vendor/plugins/haml/lib/sass/plugin.rb:116:in `process'
> /vendor/rails/actionpack/lib/action_controller/base.rb:326:in
> `process'
> /vendor/rails/railties/lib/dispatcher.rb:39:in `dispatch'
> /usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/rack/adapter/
> rails.rb:52:in `serve_rails'
> /usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/rack/adapter/
> rails.rb:67:in `call'
> /usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/thin/
> connection.rb:30:in `process'
> /usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/thin/
> connection.rb:16:in `receive_data'
> /usr/local/lib/ruby/gems/1.8/gems/eventmachine-0.10.0/lib/
> eventmachine.rb:1056:in `event_callback'
> /usr/local/lib/ruby/gems/1.8/gems/eventmachine-0.10.0/lib/
> eventmachine.rb:224:in `run_machine'
> /usr/local/lib/ruby/gems/1.8/gems/eventmachine-0.10.0/lib/
> eventmachine.rb:224:in `run'
> /usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/thin/server.rb:
> 55:in `listen!'
> /usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/lib/thin/server.rb:
> 44:in `start!'
> /usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/bin/thin:85:in `start'
> /usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/bin/thin:116:in `send'
> /usr/local/lib/ruby/gems/1.8/gems/thin-0.5.3/bin/thin:116
> /usr/local/bin/thin:19:in `load'
> /usr/local/bin/thin:19
>
> Any thoughts?
>
> Thanks
>
>
> On Jan 18, 2008, at 8:43 PM, Bob Hutchison wrote:
>
>>
>> On 18-Jan-08, at 10:15 PM, s.ross wrote:
>>
>>> I can go to http://rootdomain:<some-big-number> and there's my
>>> site. However, I can't get to it using Apache's mod_proxy.
>>
>>
>> Any luck with restarting or stop/start of apache?
>>
>> With OS X 10.5 I'm doing that a lot now, never in 10.4 -- if anyone
>> knows what that's all about, do tell.
>>
>> Cheers,
>> Bob
>>
>> ----
>> Bob Hutchison -- tumblelog at http://www.recurs...
>> Recursive Design Inc. -- weblog at http://www.recursiv...
>> http://www.rec... -- works on http://www.raconteur.info/cms-for-static-con...
>>
>>
>>
>
>


Radoslaw Bulat

1/19/2008 3:44:00 PM

0

PiBBbmQgZXZlbiBpZiBpdCB3b3VsZCBiZSBtdWx0aSB0aHJlYWRlZCBpdCB3b24ndCB3b3JrLiBF
dmVyeSB0aW1lCj4gc3RvcmVfdmlzaXRzIG1ldGhvZHMgaXMgZXhlY3V0ZWQgbmV3IG11dGV4IGlz
IGNyZWF0ZWQsIHNvIHRoZXJlIHdvbid0Cj4gYmUgc3luY2hyb25pemF0aW9uLgo+CgpUaGUgcmVh
c29uIGZvciBlcnJvciBtZXNzYWdlICJUaHJlYWRFcnJvciAobm90IG93bmVyKToKL3ZlbmRvci9w
bHVnaW5zL3NpdGVhbGl6ZXIvbGliL3NpdGVhbGl6ZXIucmI6ODA6aW4gYHVubG9jaycKKC4uLikK
IgppcyB0aGF0IHlvdSBjYWxsICd1bmxvY2snIG1ldGhvZCB0d2ljZS4gJ2Vuc3VyZScgYmxvY2sg
aXMgb2ssIHNvCnJlbW92ZSBwcmV2aW91cyBjYWxsaW5nIChhIHRoZSBlbmQgb2YgYmVnaW4gYmxv
Y2spLgoKLS0gClJhZG9zs2F3IEJ1s2F0CgpodHRwOi8vcmFkYXJlay5qb2dnZXIucGwgLSBt82og
YmxvZwo=

Steve Ross

1/19/2008 5:54:00 PM

0

Oooooh, you're right. Unlock is called twice. This is code in a Rails =20=

plugin, and I know that's no disclaimer of responsibility for its =20
working right. I still have to take responsibility for that. I'll let =20=

the author know, but here's a follow-on question.

Assuming bad behavior on the part of the client code (in this case, =20
calling unlock twice), should this be rescued, the error logged, and =20
an attempt made to keep the server alive or should the process =20
terminate (as it currently does)?

I believe the intent was well-intentioned but that it doesn't prevent =20=

concurrency issues cross-process and obviously provides no benefits in =20=

a Rails process because Rails puts a great big mutex around the whole =20=

request/response pipeline.

Thanks for looking into this.

--steve

On Jan 19, 2008, at 7:44 AM, Rados=C5=82aw Bu=C5=82at wrote:

>> And even if it would be multi threaded it won't work. Every time
>> store_visits methods is executed new mutex is created, so there won't
>> be synchronization.
>>
>
> The reason for error message "ThreadError (not owner):
> /vendor/plugins/sitealizer/lib/sitealizer.rb:80:in `unlock'
> (...)
> "
> is that you call 'unlock' method twice. 'ensure' block is ok, so
> remove previous calling (a the end of begin block).
>
> --=20
> Rados=C5=82aw Bu=C5=82at
>
> http://radarek... - m=C3=B3j blog


Steve Ross

1/19/2008 6:57:00 PM

0


On Jan 19, 2008, at 10:46 AM, Rados=C5=82aw Bu=C5=82at wrote:

> Of course it depends on specific situation but in about 99% situations
> you should log error and give message to user describing what was
> wrong (it could be even well known rails message "something went
> wrong" ;)). Of course there exceptions that you should explicitly
> rescue and exceptions that are very generic to catch every time.

I have a rescue_exception function but this problem is happening in a =20=

place where it kills off the server. It doesn't do the same with =20
mongrel and I'm not sure why.

--steve


Radoslaw Bulat

1/19/2008 7:33:00 PM

0

PiBJIGhhdmUgYSByZXNjdWVfZXhjZXB0aW9uIGZ1bmN0aW9uIGJ1dCB0aGlzIHByb2JsZW0gaXMg
aGFwcGVuaW5nIGluIGEKPiBwbGFjZSB3aGVyZSBpdCBraWxscyBvZmYgdGhlIHNlcnZlci4gSXQg
ZG9lc24ndCBkbyB0aGUgc2FtZSB3aXRoCj4gbW9uZ3JlbCBhbmQgSSdtIG5vdCBzdXJlIHdoeS4K
PgoKV2hpY2ggc2VydmVyIGRvIHlvdSB1c2U/IE1heWJlIGl0IGRvZXNuJ3QgaGFuZGxlIGFsbCBr
aW5kIG9mCmV4Y2VwdGlvbnMgKGluIHRoaXMgY2FzZSBUaHJlYWRFcnJvcik/CgoKLS0gClJhZG9z
s2F3IEJ1s2F0CgpodHRwOi8vcmFkYXJlay5qb2dnZXIucGwgLSBt82ogYmxvZwo=

Steve Ross

1/19/2008 7:53:00 PM

0

On Jan 19, 2008, at 11:32 AM, Rados=C5=82aw Bu=C5=82at wrote:

> Which server do you use? Maybe it doesn't handle all kind of
> exceptions (in this case ThreadError)?

Typically, I use Apache proxied to mongrel. It, evidently, does gobble =20=

up ThreadError. This was a proof of concept for Apache proxied to =20
Thin. It does not behave the same in identical circumstances on the =20
same machine (same port, environment, etc.).=