2011-10-22 2 views
4

rack-timeout은 Gemfile에 포함되어 있지만 제작시 미들웨어로만 사용하기를 원합니다. 따라서 이니셜 라이저에는 다음이 포함됩니다.미들웨어는 어떻게 삭제 되나요?

config.middleware.delete Rack::Timeout 

이 줄 앞뒤의 검사는 배열에서 랙 타임 아웃이 제거 된 것을 나타냅니다. 그럼에도 불구하고 요청은 여전히 ​​시간 초과되며 보석에 빠른 '넣기'가 실제로 그것이 범인임을 보여줍니다.

미들웨어 스택이 삭제되기 전에 이미 빌드 되었기 때문에 이것이 발생 했습니까? 아니면 요청마다 스택을 읽습니까? 그렇다면 무엇이 문제가 될 수 있습니까?

답변

8

왜 다음과 같은 것이 없습니까?

group :production do 
    gem "rack-timeout" 
end 

은 이론적으로, 이니셜의 미들웨어 삭제는 config/initializers/에 뭔가 퍼팅에 대해 얘기하고 가정, 서버를 다시 시작하면 문제의주의를 기울여야한다. 없음 (내가 dev에 서버를 재시작 한 후

sleep 1 

모든 멋진 듯 :


좀 더 실험을했고 config/initializers/rack-timeout.rb에이 떨어졌다 :

if Rails.env.production? 
    Rack::Timeout.timeout = 0.5 
else 
    Rails.configuration.middleware.delete Rack::Timeout 
end 

그리고 이것은 스캐 폴딩 컨트롤러 시각 제한 시간 : D). 어쩌면 나쁜 변수 일 수도 있습니다.

아직 생산 전용 그룹을 사용하는 것이 더 나은 해결책이라고 생각합니다.

OSX에서 Rails with Rails 3.2.2와 ruby ​​1.9.2-p290.

+0

프로젝트가 완료되어 결과를 확인할 수 없으므로 나에게 확실합니다. –

+0

twitter에서이 스레드에 대한 링크를 보았으므로 이에 대한 대답을 줄 것입니다. :) –

관련 문제