랙 상단에 Sinatra 앱을 실행중인 실제 시스템이 몇 대 있습니다. 보통 서버에 대한 변경 사항을 동기화하기 위해 사용하는 Puppet이 프로젝트의 Gemfile.lock이 변경되었음을 알게되고 결과적으로 bundle install --binstubs --deployment
명령을 내 보내야 새로운 보석을 얻을 수 있습니다. 이 경우 새로운 보석이 아직 설치되지 않았기 때문에 ANY http 요청으로 Bundler를 호출하여 보석을 요구하면 500 오류가 발생합니다.랙 : 번들 설치 중 - Bundler :: GemNotFound 오류 --deployment`
일반적으로 서버가 작동하는지 확인하기 위해 주기적으로 http 요청을하는 다른 프로세스로 인해 적어도 하나의 랙 프로세스가 중지되지만이 경우 랙 프로세스가 작동하지 않습니다. PassengerMinInstances
지시문은 문제가 새로운 인스턴스와 관련되어있는 경우 도움이 될 수 있지만 서버가 여전히 작동 중인지 테스트하기 위해 주기적으로 페이지를 가져 오는 프로세스가 있으므로 최소한 하나의 랙 프로세스가 살아 있어야합니다. 의뢰.
아마 실제로 bundle install
가 완료 될 때까지합니다 (restart.txt 파일을 보내고 touch
에 의해) 랙을 다시 시작하지 않는 꼭두각시주의해야한다, 그래서 우리의 랙 프로세스에서이 멀리 갈 이유가 이해가되지 않습니다 시각. 아무도 이런 일이 발생 했습니까? 간과 한 모든 요청에 대해 전체 환경을 다시로드하지 않는 랙 옵션이 있습니까?
흥미 롭습니다. 응용 프로그램 (그리고 아마도 의존하는 보석들)을 모두 배포하는 것을 신경 쓸 필요가 없다면 그건 나쁜 해결책이 아닙니다. 하지만 정기적으로 배포하는 경우 대역폭이 너무 많습니다. – tjarratt