Webrick - Could not determine content-length of response body

Mar 17, 2013

Blog’umu Octopress kullanarak hazırlıyorum. Yaptığım değişiklikleri yayına almadan önce lokalde görüntülemek için rake preview komutunu kullanıyorum.

Bu sırada loglarda şu uyarı mesajı bolca görünüyordu:

WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true

Biraz araştırınca, bunun Webrick’le ilgili bir bug olduğunu öğrendim. Bunun için bir kaç farklı öneri vardı:

  • Önemli bir mesaj değil bu, basitçe yok sayabilirsiniz:

( Aaron Patterson (@tenderlove) Rails’in core geliştiricilerinden birisidir. )

  • Webrick yerine Thin kullanın:
    Gemfile içerisine gem 'thin' satırını ekleyin. Gemfile’ın son hali şu şekilde olmalı:

      source "http://rubygems.org"
    
      group :development do
        gem 'rake', '~> 0.9.2'
        gem 'rack', '~> 1.4.1'
        gem 'jekyll', '~> 0.11.2'
        gem 'rdiscount', '~> 1.6.8'
        gem 'pygments.rb', '~> 0.2.12'
        gem 'RedCloth', '~> 4.2.9'
        gem 'haml', '~> 3.1.6'
        gem 'compass', '~> 0.12.1'
        gem 'rubypants', '~> 0.2.0'
        gem 'rb-fsevent', '~> 0.9'
        gem 'stringex', '~> 1.4.0'
        gem 'liquid', '~> 2.3.0'
        gem 'thin'
      end 
    
      gem 'sinatra', '~> 1.3.2'
    

Bu değişikliği yapıp bundle install komutunu verdiğimizde Thin, makinemize kurulacak ve bundan sonra varsayılan web sunucu olarak Webrick yerine kullanılacaktır.

  • Bunun için yayınlanmış bir patch var, onu uygulayın:
    Ben bu öneriye uyarak patch’i uyguladım.
$ wget https://bugs.ruby-lang.org/attachments/download/2300/204_304_keep_alive.patch
$ cd ~/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/webrick/
$ patch < 204_304_keep_alive.patch 
patching file httpresponse.rb
patching file test_httpresponse.rb

Siz 2. satırdaki yolu, kullandığınız sürüme göre değiştirmeli ve patch’i ondan sonra uygulamalısınız.

Bu adımları sırası ile uyguluyoruz ve bu uyarı mesajı artık görüntülenmiyor.

Konu ile ilgili ayrıntılı tartışmaya buradan bakabilirsiniz.