Seit dem Upgrade auf Rails 3.1 wird diese Warnmeldung in meinem Entwicklungsprotokoll angezeigt:
WARN Die Inhaltslänge des Antwortkörpers konnte nicht ermittelt werden. Legen Sie die Inhaltslänge der Antwort oder des Satzes fest
Response#chunked = true
Was bedeutet das und wie kann ich es entfernen? Ist es ein Problem?
ruby-on-rails
ruby
webrick
Nate Bird
quelle
quelle
rails s thin
. Ta-da! Keine Warnungen mehr.Antworten:
Hat einem Mitglied von Rails-Core dieselbe Frage gestellt:
https://twitter.com/luislavena/status/108998968859566080
Und die Antwort:
https://twitter.com/tenderlove/status/108999110136303617
quelle
gem 'thin'
Zu Ihrer Information , wenn Sie die Nachrichten stören, können Sie als Problemumgehung Thin verwenden ( zu Ihrer Gem-Datei hinzufügen , Ihren Server mit startenrails server thin
). (Ups, habe gerade bemerkt, dass @Scott Lowe dies bereits oben gesagt hat.)Der folgende Patch hat das Problem in meinem Fall gelöst . keine Warnungen mehr für mich.
204_304_keep_alive.patch
Bearbeiten Sie einfach die Datei httpresponse.rb in Zeile 205 wie unter dem obigen Link gezeigt. Tatsächlich zeigt der Link eine Korrektur, die an einer zukünftigen Version von Ruby vorgenommen wurde.
Ich verwende Rails 3.2.0 auf Ruby 1.9.3-p0, das über RVM als Einzelbenutzer installiert wurde. Der Ort in meinem Fall ist also:
Der Speicherort der zu ändernden Datei hängt von der Art der Installation, der RVM oder nicht oder sogar von Mehrbenutzer- oder Einzelbenutzern ab. Ich gebe also nur den letzten Teil davon:
Ich hoffe das kann jemandem helfen.
BEARBEITEN: Dies ist der Link zu dem Commit, der die betreffende Zeile im Trunk-Zweig des Ruby-Projekts geändert hat.
quelle
Durch explizites Hinzufügen des Edelsteins zur Gemfile wurden die Warnmeldungen für mich entfernt:
quelle
Sie können auch Thin anstelle des Standard-Webricks verwenden. Fügen Sie dies hinzu
Gemfile
gem 'thin'
Dann
rails s thin
wird Thin verwendet und die Warnung verschwindet.quelle
thin
indevelopment
Gruppe gesetzt. Rails 4 scheint es beim Laufen automatisch aufzunehmenrails s
Wenn Sie .rvm verwenden, tun Sie dies, um das Problem zu beheben ...
Wie von João Soares erwähnt , können Sie dies tun, wenn Sie diese Warnung bei der Entwicklung nicht loswerden möchten.
Verwenden Sie Ihren bevorzugten Editor, um diese Datei zu öffnen:
Gehen Sie zu der Zeile, die dies enthält (für mich war es wirklich Zeile 206):
Ändern Sie es aus diesem Patch in:
Speichern Sie die Datei und starten Sie Ihren Rails-Server neu
quelle
line 107
für mich.Dieses Problem wurde in Rubys Trunk-Zweig mit diesem Commit für Webrick behoben.
Sie können diese spezielle Webrick-Datei in Ihrem Setup auf ähnliche Weise bearbeiten. Der ungefähre Standort kann ermittelt werden durch:
So bearbeiten Sie die Datei tatsächlich:
(Oder verwenden Sie anstelle von Nano Ihren Lieblingseditor.)
quelle
nano `ruby -e"print %x{gem which webrick}.chomp %Q{.rb\n}"`/httpresponse.rb
.JRuby-Version: Wenn Sie .rvm verwenden, tun Sie dies, um das Problem zu beheben ...
Wie von João Soares und Kjellski erwähnt , können Sie dies tun, wenn Sie diese Warnung bei der Entwicklung entfernen möchten und JRuby verwenden.
Verwenden Sie Ihren bevorzugten Editor, um diese Datei zu öffnen:
Gehen Sie zu der Zeile, die dies enthält (für mich war es Zeile 205):
Ändern Sie es aus diesem Patch in:
Speichern Sie die Datei und starten Sie Ihren Rails-Server neu.
quelle
Eine weitere Problemumgehung, mit der die fehlerhafte Zeile aus dem Webrick entfernt wird. Es ist einfach nicht so nützlich:
(Möglicherweise müssen Sie
sudo
)quelle
Hinzufügen
zu Ihrer
application.rb
Datei, und die Warnung verschwindet auch mit Webrick. Dies wird auchContent-Length
in der Produktion richtig eingestellt , wenn eine JSON- oder Textantwort gerendert wird.quelle