Co " WARN nie może określić zawartości-długość ciała odpowiedzi."wredny i jak się go pozbyć?

Od aktualizacji do Rails 3.1 widzę ten Komunikat ostrzegawczy w moim dzienniku rozwoju:

WARN nie mógł określić zawartości-długości ciała odpowiedzi. Set content - długość odpowiedzi lub set Response#chunked = true

Co to oznacza i jak Mogę to usunąć? Czy to jakiś problem?

Author: Andrew Marshall, 2011-08-16

9 answers

Zadał to samo pytanie jednemu z członków Rails-Core:

Https://twitter.com/luislavena/status/108998968859566080

I odpowiedź:

Https://twitter.com/tenderlove/status/108999110136303617

Ya, it ' s fine. Trzeba to posprzątać, ale nic się nie stało.

 229
Author: Luis Lavena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-26 11:07:17

Poniższy patch rozwiązał problem w moim przypadku; żadnych więcej ostrzeżeń dla mnie.

204_304_keep_alive.patch

Po prostu edytuj plik httpresponse.rb w linii 205, jak pokazano w linku powyżej; w rzeczywistości link pokazuje poprawkę do przyszłego wydania Rubiego.

Używam rails 3.2.0 na ruby 1.9.3-P0 zainstalowanym przez RVM jako pojedynczy użytkownik. Więc lokalizacja w moim przypadku to:

~/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpresponse.rb

Lokalizacja pliku do zmiany różni się w zależności od Typ instalacji, RVM lub nie, a nawet multi-user lub single user, więc podaję tylko ostatnią jego część:

.../ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpresponse.rb
Mam nadzieję, że to może komuś pomóc.

EDIT: to jest link do commita, który zmienił daną linię w gałęzi trunk projektu ruby.

 78
Author: jasoares,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-04 14:59:13

Po prostu dodanie klejnotu do Gemfile pozbyło się dla mnie komunikatów ostrzegawczych:

group :development do
  gem 'webrick', '~> 1.3.1'
end
 56
Author: ootoovak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-25 22:13:26

Możesz również użyć Thin zamiast domyślnego Webrick. Dodaj to do Gemfile gem 'thin'

Wtedy rails s thin użyje thin, a Ostrzeżenie zniknie.

 54
Author: Cam Song,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-01 21:20:03

Jeśli bierzesz .rvm, zrób to, żeby to naprawić...

Jak wspomniał João Soares , wszystkie kredyty dla niego, to jest to, co możesz zrobić, jeśli nie chcesz pozbyć się tego ostrzeżenia na rozwój.

  1. Użyj swojego ulubionego edytora, aby otworzyć ten plik:

    ~/.rvm/rubies/<ruby-version>/lib/ruby/1.9.1/webrick/httpresponse.rb
    
  2. Przejdź do linii, która zawiera to (dla mnie była to naprawdę linia 206):

    if chunked? || @header['content-length']
    
  3. Zmień to, zaczerpnięte z tego patcha, na to:

    if chunked? || @header['content-length'] || @status == 304 || @status == 204
    
  4. Zapisz plik i ewentualnie zrestartuj serwer rails

 15
Author: Kjellski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-19 15:51:38

Ten problem został naprawiony w gałęzi pnia Rubiego za pomocą tego commit do webrick.

Możesz edytować ten konkretny plik webrick podobnie w konfiguracji. Przybliżoną lokalizację można znaleźć poprzez:

gem which webrick

Aby edytować plik:

nano \`ruby -e"print %x{gem which webrick}.chomp %Q{.rb\n}"\`/httpresponse.rb

(lub zamiast nano użyj swojego ulubionego edytora.)

 12
Author: MarkDBlackwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-17 18:05:03

Wersja JRuby: jeśli używasz .rvm, zrób to, żeby to naprawić...

Jak wspomnieli João Soares i Kjellski, to jest to, co możesz zrobić, jeśli chcesz pozbyć się tego ostrzeżenia na temat rozwoju i używasz JRuby.

  1. Użyj swojego ulubionego edytora, aby otworzyć ten plik:

    ~/.rvm/rubies/jruby-<version>/lib/ruby/<1.8 or 1.9>/webrick/httpresponse.rb
    
  2. Przejdź do linii, która zawiera to (dla mnie była to linia 205):

    if chunked? || @header['content-length']
    
  3. Zmień go, pobrany z ten patch, na to:

    if chunked? || @header['content-length'] || @status == 304 || @status == 204
    
  4. Zapisz plik i ponownie uruchom serwer rails.

 5
Author: Crimbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-19 14:10:47

Inne obejście, które usuwa linię obrażeń z webrick. To po prostu nie jest takie przydatne:

cd `which ruby`/../../lib/ruby/1.9.1/webrick/ && sed -i '.bak' -e'/logger.warn/d' httpresponse.rb

(może być konieczne sudo)

 3
Author: Xavier Shay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-20 00:11:55

Dodaj

config.middleware.use Rack::ContentLength

Do Twojego pliku application.rb, A Ostrzeżenie zniknie nawet z webrickiem. Spowoduje to również prawidłowe ustawienie Content-Length w produkcji podczas renderowania odpowiedzi json lub text.

 3
Author: Michael Franzl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-10 07:33:08