sourcecode

"WARn Can't can't decision-length of response body"는 무엇을 의미하며 어떻게 제거해야 합니까?

codebag 2023. 11. 4. 10:38
반응형

"WARn Can't can't decision-length of response body"는 무엇을 의미하며 어떻게 제거해야 합니까?

Rails 3.1로 업그레이드한 후 개발 로그에 다음과 같은 경고 메시지가 표시됩니다.

경고 응답 본문의 내용 길이를 확인할 수 없습니다.응답 또는 집합의 내용 길이 설정Response#chunked = true

이것은 무엇을 의미하며 어떻게 제거할 수 있습니까?그게 문제야?

Rails-Core의 멤버 중 한 명에게도 같은 질문을 했습니다.

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

그리고 대답은:

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

네, 괜찮습니다.치워야 하는데 다친 데는 없어요.

다음 패치를 통해 제 경우의 문제가 해결되었습니다. 더 이상 경고는 하지 않습니다.

204_ 304_ alive 유지

위의 링크와 같이 205번 줄에서 httpresponse.rb 파일을 편집하면 됩니다. 실제로 링크는 향후 Ruby 릴리스에 대한 수정 사항을 보여줍니다.

RVM을 통해 설치된 루비 1.9.3-p0의 레일 3.2.0을 단일 사용자로 사용하고 있습니다.그럼 제 사건의 위치는 다음과 같습니다.

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

변경할 파일의 위치는 설치 유형, RVM 여부 또는 다중 사용자 또는 단일 사용자에 따라 다르므로 마지막 부분만 설명합니다.

.../ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpresponse.rb

저는 이것이 누군가에게 도움이 될 수 있기를 바랍니다.

편집: 루비 프로젝트의 트렁크 브랜치에서 문제의 행을 변경한 커밋에 대한 링크입니다.

젬 파일에 젬을 명시적으로 추가하기만 해도 경고 메시지가 사라졌습니다.

group :development do
  gem 'webrick', '~> 1.3.1'
end

기본 Webrick 대신 Thin을 사용할 수도 있습니다.추가할 위치Gemfile gem 'thin'

그리고나서rails s thin얇은 두께를 사용하고 경고는 사라집니다.

.rvm을 사용하는 경우 이 작업을 수행하여 수정합니다.

주앙 소아레스가 언급한 바와 같이, 모두 그의 공로입니다. 이것은 개발에 대한 경고를 없애고 싶지 않다면 할 수 있는 일입니다.

  1. 즐겨찾기 편집기를 사용하여 이 파일을 엽니다.

    ~/.rvm/rubies/<ruby-version>/lib/ruby/1.9.1/webrick/httpresponse.rb
    
  2. 이 내용이 포함된 줄로 이동합니다(나에게는 정말 206 줄이었습니다).

    if chunked? || @header['content-length']
    
  3. 이 패치에서 가져온 것을 다음으로 변경합니다.

    if chunked? || @header['content-length'] || @status == 304 || @status == 204
    
  4. 파일을 저장한 후 레일 서버를 다시 시작합니다.

이 문제는 webbrick에 대한 이 커밋으로 Ruby의 트렁크 지점에서 해결되었습니다.

설정에서 이 특정 webbrick 파일을 유사하게 편집할 수 있습니다.대략적인 위치는 다음과 같습니다.

gem which webrick

파일을 실제로 편집하려면:

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

(또는 nano 대신 좋아하는 편집기를 사용합니다.)

JRuby 버전:.rvm을 사용하는 경우 이 작업을 수행하여 수정합니다.

Jooo SoaresKjellski가 언급한 것처럼, 이것은 개발에 대한 이 경고를 없애고 싶고 JRuby를 사용하고 있다면 할 수 있는 것입니다.

  1. 즐겨찾기 편집기를 사용하여 이 파일을 엽니다.

    ~/.rvm/rubies/jruby-<version>/lib/ruby/<1.8 or 1.9>/webrick/httpresponse.rb
    
  2. 이 내용이 포함된 줄로 이동(저는 205번 줄이었습니다):

    if chunked? || @header['content-length']
    
  3. 이 패치에서 가져온 것을 다음으로 변경합니다.

    if chunked? || @header['content-length'] || @status == 304 || @status == 204
    
  4. 파일을 저장한 후 레일 서버를 다시 시작합니다.

위브릭에서 불쾌감을 주는 라인을 제거하는 또 다른 해결책입니다.별로 유용하지 않을 뿐입니다.

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

(필요할 수도 있습니다.sudo)

더하다

config.middleware.use Rack::ContentLength

당신에게application.rb파일을 작성하면 경고는 webbrick을 사용해도 사라집니다.이것 또한 설정됩니다.Content-Lengthjson 또는 text response를 렌더링할 때 적절하게 제작 중입니다.

언급URL : https://stackoverflow.com/questions/7082364/what-does-warn-could-not-determine-content-length-of-response-body-mean-and-h

반응형