Rainbows! Rack HTTP server user/dev discussion
 help / color / mirror / code / Atom feed
* Transfer encoding chunked disables HAProxy gzip compression
@ 2013-08-02 19:26 Claudio Poli
       [not found] ` <CD8781D3-288B-4B61-85ED-16B8B15A90E9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Claudio Poli @ 2013-08-02 19:26 UTC (permalink / raw)
  To: rainbows-talk-GrnCvJ7WPxnNLxjTenLetw

Hello,
story time.

I was investigating why suddenly our service become slow in response times, currenrly the app is served through Rainbows! behind HAProxy.

It turns out that the problem is HAProxy, which we use as frontend/load balancer *and* for gzip compression of responses from backends.

HAProxy 1.5dev19 disabled automatic response compression for responses that have Transfer-Encoding: chunked from backends.
I found out by downgrading haproxy as last resort and asking the developer what's up with compression being disabled from one release to another.
We had some reports from our automated tools that something was wrong with gzip but it was so rare we didn't care that much, until today.

There are certain rules in HAProxy to successfully enable automatic gzip compression in responses.
The author told me that he had to disable compression for chunked responses in the latest version due to bad code in HAProxy, but it is still enabled for fixed content-length responses.

So, I tried to study rainbows and unicorn internals a bit (-N switch, -E 'development, deploy, none') to attempt and disable chunked middleware and replace with a Rack::ContentLength, so if and when the body can be enumerated my responses would have a fixed size length to feed the client.

It doesn't work: I tried to place them in config.ru, in rails' application.rb, tried the -N switch, messed with -E but in staging every response that comes out are of type http/1.1 chunked requests.

So I went ahead and added Rack::Deflater to live with the chunked response types and enable gzip compression as well, even if the cpu spent time compressing moved from one load balancer to the app server.

I would like to know more about this behavior and based on which factors Rainbows! or Unicorn set and pick the transfer-encoding or content-lenght to use.

Thanks!
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found] ` <CD8781D3-288B-4B61-85ED-16B8B15A90E9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2013-08-02 20:03   ` Claudio Poli
       [not found]     ` <9C3CB455-F4F3-4DF4-BF67-1801547FE1B7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2013-08-02 20:58   ` Eric Wong
  1 sibling, 1 reply; 13+ messages in thread
From: Claudio Poli @ 2013-08-02 20:03 UTC (permalink / raw)
  To: Rainbows! list

I would like to add that if I insert Rack::Deflater now every response does not contain nor content-length or transfer-encoding chunked. Rails 3.2.14.
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]     ` <9C3CB455-F4F3-4DF4-BF67-1801547FE1B7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2013-08-02 20:46       ` Eric Wong
       [not found]         ` <20130802204647.GA7479-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Eric Wong @ 2013-08-02 20:46 UTC (permalink / raw)
  To: Rainbows! list

Claudio Poli <claudio-3HQ/CcOImoi171pxa8y+qA@public.gmane.org> wrote:
> I would like to add that if I insert Rack::Deflater now every response
> does not contain nor content-length or transfer-encoding chunked.
> Rails 3.2.14.

You probably need to add Rack::Chunked/ContentLength back into your
middleware stack outside of Rack::Deflater.

(another response coming to the other email)
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found] ` <CD8781D3-288B-4B61-85ED-16B8B15A90E9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2013-08-02 20:03   ` Claudio Poli
@ 2013-08-02 20:58   ` Eric Wong
       [not found]     ` <20130802205810.GA9486-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
  1 sibling, 1 reply; 13+ messages in thread
From: Eric Wong @ 2013-08-02 20:58 UTC (permalink / raw)
  To: Rainbows! list

Claudio Poli <claudio-3HQ/CcOImoi171pxa8y+qA@public.gmane.org> wrote:
> Hello, story time.
> 
> I was investigating why suddenly our service become slow in response
> times, currenrly the app is served through Rainbows! behind HAProxy.
> 
> It turns out that the problem is HAProxy, which we use as
> frontend/load balancer *and* for gzip compression of responses from
> backends.

<snip>
OK, hopefully these problems get fixed in HAProxy soon

> So, I tried to study rainbows and unicorn internals a bit (-N switch,
> -E 'development, deploy, none') to attempt and disable chunked
> middleware and replace with a Rack::ContentLength, so if and when the
> body can be enumerated my responses would have a fixed size length to
> feed the client.

> It doesn't work: I tried to place them in config.ru, in rails'
> application.rb, tried the -N switch, messed with -E but in staging
> every response that comes out are of type http/1.1 chunked requests.

This could be from Rails chunked responses, especially if you're using
-N already.  You may have to dig into Rails internals a bit...

When in doubt, try dropping Rails from the equation and using a bare
bones "hello world" type Rack app (e.g. Rack::Lobster)

Rack::ContentLength won't add a Content-Length header if the response
was already chunked anywhere before.

> So I went ahead and added Rack::Deflater to live with the chunked
> response types and enable gzip compression as well, even if the cpu
> spent time compressing moved from one load balancer to the app server.

This is probably the better way to go anyways, especially if you add
more Rainbows! workers and maintain few HAproxy processes.

> I would like to know more about this behavior and based on which
> factors Rainbows! or Unicorn set and pick the transfer-encoding or
> content-lenght to use.

It's down to middleware/Rack stack ordering (LIFO), and reading code of
these middlewares.  Since Rack::Chunked runs first in the default
Rack::Server configs, Chunked can insert its headers before
ContentLength for HTTP 1.1 requests.

Rack::Chunked won't force an existing Content-Length response to
be chunked, it'll only make things chunked that don't have either
Content-Length/Transfer-Encoding set.
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]         ` <20130802204647.GA7479-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
@ 2013-08-02 21:00           ` Eric Wong
       [not found]             ` <20130802210004.GB9486-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Eric Wong @ 2013-08-02 21:00 UTC (permalink / raw)
  To: Rainbows! list

Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org> wrote:
> Claudio Poli <claudio-3HQ/CcOImoi171pxa8y+qA@public.gmane.org> wrote:
> > I would like to add that if I insert Rack::Deflater now every response
> > does not contain nor content-length or transfer-encoding chunked.
> > Rails 3.2.14.
> 
> You probably need to add Rack::Chunked/ContentLength back into your
> middleware stack outside of Rack::Deflater.

To clarify, your config.ru (using -N) should probably be ordered
like this:

Rack::ContentLength # for HTTP/1.0 users
Rack::Chunked
Rack::Deflater
...
YourApp
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]             ` <20130802210004.GB9486-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
@ 2013-08-02 21:35               ` Claudio Poli
  2013-08-02 21:49               ` Claudio Poli
  1 sibling, 0 replies; 13+ messages in thread
From: Claudio Poli @ 2013-08-02 21:35 UTC (permalink / raw)
  To: Rainbows! list

On 02/ago/2013, at 23:00, Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org> wrote:

>> You probably need to add Rack::Chunked/ContentLength back into your
>> middleware stack outside of Rack::Deflater.
> 
> To clarify, your config.ru (using -N) should probably be ordered
> like this:
> 
> Rack::ContentLength # for HTTP/1.0 users
> Rack::Chunked
> Rack::Deflater

Hello,
yes, I tried but the result is garbled: http://d.pr/i/Nc1Y

I'm unsure what to try next.


_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]             ` <20130802210004.GB9486-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
  2013-08-02 21:35               ` Claudio Poli
@ 2013-08-02 21:49               ` Claudio Poli
  1 sibling, 0 replies; 13+ messages in thread
From: Claudio Poli @ 2013-08-02 21:49 UTC (permalink / raw)
  To: Rainbows! list

Someone left another deflater in code, I removed it and I'm going to deploy.
Will keep you up to date, thanks.

On 02/ago/2013, at 23:00, Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org> wrote:

> Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org> wrote:
>> Claudio Poli <claudio-3HQ/CcOImoi171pxa8y+qA@public.gmane.org> wrote:
>>> I would like to add that if I insert Rack::Deflater now every response
>>> does not contain nor content-length or transfer-encoding chunked.
>>> Rails 3.2.14.
>> 
>> You probably need to add Rack::Chunked/ContentLength back into your
>> middleware stack outside of Rack::Deflater.
> 
> To clarify, your config.ru (using -N) should probably be ordered
> like this:
> 
> Rack::ContentLength # for HTTP/1.0 users
> Rack::Chunked
> Rack::Deflater
> ...
> YourApp
> _______________________________________________
> Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
> http://rubyforge.org/mailman/listinfo/rainbows-talk
> Do not quote signatures (like this one) or top post when replying

_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]     ` <20130802205810.GA9486-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
@ 2013-08-02 22:34       ` Claudio Poli
       [not found]         ` <FE4BFDCF-538B-4D2D-8991-FE0047DF52AA-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Claudio Poli @ 2013-08-02 22:34 UTC (permalink / raw)
  To: Rainbows! list

Ok, in staging everything seems to work correctly, we had to handle a case where one of our internal services couldn't communicate through compressed responses.

Willy told me the HAProxy compression issue for chunked request might be solved in Sept.

Best,
Claudio

On 02/ago/2013, at 22:58, Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org> wrote:

> Claudio Poli <claudio-3HQ/CcOImoi171pxa8y+qA@public.gmane.org> wrote:
>> Hello, story time.
>> 
>> I was investigating why suddenly our service become slow in response
>> times, currenrly the app is served through Rainbows! behind HAProxy.
>> 
>> It turns out that the problem is HAProxy, which we use as
>> frontend/load balancer *and* for gzip compression of responses from
>> backends.
> 
> <snip>
> OK, hopefully these problems get fixed in HAProxy soon
> 
>> So, I tried to study rainbows and unicorn internals a bit (-N switch,
>> -E 'development, deploy, none') to attempt and disable chunked
>> middleware and replace with a Rack::ContentLength, so if and when the
>> body can be enumerated my responses would have a fixed size length to
>> feed the client.
> 
>> It doesn't work: I tried to place them in config.ru, in rails'
>> application.rb, tried the -N switch, messed with -E but in staging
>> every response that comes out are of type http/1.1 chunked requests.
> 
> This could be from Rails chunked responses, especially if you're using
> -N already.  You may have to dig into Rails internals a bit...
> 
> When in doubt, try dropping Rails from the equation and using a bare
> bones "hello world" type Rack app (e.g. Rack::Lobster)
> 
> Rack::ContentLength won't add a Content-Length header if the response
> was already chunked anywhere before.
> 
>> So I went ahead and added Rack::Deflater to live with the chunked
>> response types and enable gzip compression as well, even if the cpu
>> spent time compressing moved from one load balancer to the app server.
> 
> This is probably the better way to go anyways, especially if you add
> more Rainbows! workers and maintain few HAproxy processes.
> 
>> I would like to know more about this behavior and based on which
>> factors Rainbows! or Unicorn set and pick the transfer-encoding or
>> content-lenght to use.
> 
> It's down to middleware/Rack stack ordering (LIFO), and reading code of
> these middlewares.  Since Rack::Chunked runs first in the default
> Rack::Server configs, Chunked can insert its headers before
> ContentLength for HTTP 1.1 requests.
> 
> Rack::Chunked won't force an existing Content-Length response to
> be chunked, it'll only make things chunked that don't have either
> Content-Length/Transfer-Encoding set.
> _______________________________________________
> Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
> http://rubyforge.org/mailman/listinfo/rainbows-talk
> Do not quote signatures (like this one) or top post when replying

_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]         ` <FE4BFDCF-538B-4D2D-8991-FE0047DF52AA-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2013-08-02 23:11           ` Eric Wong
       [not found]             ` <20130802231115.GA24708-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Eric Wong @ 2013-08-02 23:11 UTC (permalink / raw)
  To: Rainbows! list

Claudio Poli <claudio-3HQ/CcOImoi171pxa8y+qA@public.gmane.org> wrote:
> Ok, in staging everything seems to work correctly, we had to handle a
> case where one of our internal services couldn't communicate through
> compressed responses.

Good to know!

> Willy told me the HAProxy compression issue for chunked request might
> be solved in Sept.

I will be curious to see performance numbers for your cluster with
gzipping in HAProxy vs Rack::Deflater once this is fixed in HAProxy.
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]             ` <20130802231115.GA24708-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
@ 2013-08-03  0:20               ` Claudio Poli
       [not found]                 ` <E85CF5AB-7FF6-4BE8-BAAC-5416E14D4A14-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Claudio Poli @ 2013-08-03  0:20 UTC (permalink / raw)
  To: Rainbows! list

On 03/ago/2013, at 01:11, Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org> wrote:

> Claudio Poli <claudio-3HQ/CcOImoi171pxa8y+qA@public.gmane.org> wrote:
>> Ok, in staging everything seems to work correctly, we had to handle a
>> case where one of our internal services couldn't communicate through
>> compressed responses.
> 
> Good to know!

I'm still battling a little to find the perfect configuration, my deploy script (and rails) takes RACK_ENV seriously, but the -E switch for Rainbows! and Unicorn, as I understand, it's another thing that might or not might inject Rack::ContentLength and Rack::Chunked.
I admit that I was not able to see a Content-Length response when querying the app server with curl's --http1.0 . But at least we have compression back.

>> Willy told me the HAProxy compression issue for chunked request might
>> be solved in Sept.
> 
> I will be curious to see performance numbers for your cluster with
> gzipping in HAProxy vs Rack::Deflater once this is fixed in HAProxy.

Yeah, there are definitely up and downsides in this approach to centralize gzip responses.
HAProxy has advanced parameters to fine tune the compression process,  you can set it to automatically skip gzipping when CPU reaches a user defined % threshold and the like.
To run a basic I'll probably just use the defaults.

Centralizing gzip was awesome for us because our applications servers are layered out in a distribute manner.
Now it has become pretty common to have multiple apps serving in the cloud sharing same-path HTTP endpoints through both simple and advanced routing logic at balancer level.

For example we delegate uploads and heavy streaming-related code to node.js, while our API and frontend are Rails. There are also a number of small services written in javascript, ruby and occasionally java.
It's also common that those apps communicate internally each other, via http or other message queues.

So, Rainbows! is configured to accept connections  through both tcp (only from the load balancers) and unix socket; the rest of the local stack will call Rainbows! directly on the unix socket, while serving http requests coming in from HAProxy destined the public.
Enabling gzip on the internal main rails app wreak havoc because libraries might not be ready to handle gzip responses, it's the case of the Request library for node.js. It does not ask for gzipped responses per-se, but since it is acting as a transparent proxy, the original request is taken from the client and forwarded as-is to Rails, like it was done to it directly.
In Node.js this was the point where I had to remove manually gzip headers to communicate internally with Rails (with Rack::Deflater) and without issues.

A central point where to produce gzipped responses for the public is pretty spot on for our architecture, since other apps (node.js, etc.) requires it in some cases.

I know that it might be confusing, perhaps it's time for a blog post.

Thanks,
Claudio

> _______________________________________________
> Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
> http://rubyforge.org/mailman/listinfo/rainbows-talk
> Do not quote signatures (like this one) or top post when replying

_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]                 ` <E85CF5AB-7FF6-4BE8-BAAC-5416E14D4A14-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2013-08-03  1:06                   ` Eric Wong
       [not found]                     ` <20130803010627.GA4521-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Eric Wong @ 2013-08-03  1:06 UTC (permalink / raw)
  To: Rainbows! list

Claudio Poli <claudio-3HQ/CcOImoi171pxa8y+qA@public.gmane.org> wrote:
> I'm still battling a little to find the perfect configuration, my
> deploy script (and rails) takes RACK_ENV seriously, but the -E switch
> for Rainbows! and Unicorn, as I understand, it's another thing that
> might or not might inject Rack::ContentLength and Rack::Chunked.  I
> admit that I was not able to see a Content-Length response when
> querying the app server with curl's --http1.0 . But at least we have
> compression back.

Probably best to just use -N and be explicit with middlewares in
config.ru...  But I suppose Rails could also be injecting middlewares,
too?
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]                     ` <20130803010627.GA4521-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
@ 2013-08-03  1:53                       ` Claudio Poli
       [not found]                         ` <9580D763-16FA-4DB5-8CA7-0648DD6788CD-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Claudio Poli @ 2013-08-03  1:53 UTC (permalink / raw)
  To: Rainbows! list

On 03/ago/2013, at 03:06, Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org> wrote:
> 
> Probably best to just use -N and be explicit with middlewares in
> config.ru...  But I suppose Rails could also be injecting middlewares,
> too?

I also agree that this is the most portable way. Sometimes we test other servers with the project and it's a good way to keep this particular config in one place.
Rails injects a serie of middlewares, but afaik nothing related.

Although I just want my gzip compression back from haproxy and not have to deal with this stuff anymore  :-)

Are there any other important middlewares that are not being loaded when using the -N option beside ContentLength and Chunked?
I recall this option was implement to not mess with -E values that are able to alter the internal middleware stack.
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Transfer encoding chunked disables HAProxy gzip compression
       [not found]                         ` <9580D763-16FA-4DB5-8CA7-0648DD6788CD-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2013-08-03  2:30                           ` Eric Wong
  0 siblings, 0 replies; 13+ messages in thread
From: Eric Wong @ 2013-08-03  2:30 UTC (permalink / raw)
  To: Rainbows! list

Claudio Poli <claudio-3HQ/CcOImoi171pxa8y+qA@public.gmane.org> wrote:
> Are there any other important middlewares that are not being loaded when using the -N option beside ContentLength and Chunked?

Rack::CommonLogger, but I typically use Clogger anyways
(http://clogger.rubyforge.org)
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2013-08-03  2:46 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-02 19:26 Transfer encoding chunked disables HAProxy gzip compression Claudio Poli
     [not found] ` <CD8781D3-288B-4B61-85ED-16B8B15A90E9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-08-02 20:03   ` Claudio Poli
     [not found]     ` <9C3CB455-F4F3-4DF4-BF67-1801547FE1B7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-08-02 20:46       ` Eric Wong
     [not found]         ` <20130802204647.GA7479-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2013-08-02 21:00           ` Eric Wong
     [not found]             ` <20130802210004.GB9486-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2013-08-02 21:35               ` Claudio Poli
2013-08-02 21:49               ` Claudio Poli
2013-08-02 20:58   ` Eric Wong
     [not found]     ` <20130802205810.GA9486-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2013-08-02 22:34       ` Claudio Poli
     [not found]         ` <FE4BFDCF-538B-4D2D-8991-FE0047DF52AA-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-08-02 23:11           ` Eric Wong
     [not found]             ` <20130802231115.GA24708-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2013-08-03  0:20               ` Claudio Poli
     [not found]                 ` <E85CF5AB-7FF6-4BE8-BAAC-5416E14D4A14-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-08-03  1:06                   ` Eric Wong
     [not found]                     ` <20130803010627.GA4521-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2013-08-03  1:53                       ` Claudio Poli
     [not found]                         ` <9580D763-16FA-4DB5-8CA7-0648DD6788CD-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-08-03  2:30                           ` Eric Wong

Code repositories for project(s) associated with this public inbox

	https://yhbt.net/rainbows.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).