2011-11-30 4 views
13

캡을 사용하고 유니 코드 프로세스에 USR2를 보내어 다시로드하는 스크립트를 사용하면 일반적으로 작동하지만 한 번씩 실패합니다. Unicorn 로그를 살펴보면 더 이상 존재하지 않는 이전 릴리스 디렉토리에서 Gemfile을 찾고 있음을 알 수 있습니다.capistrano의 유니콘 재시작 문제

예외 :

/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/definition.rb:14:in `build': /var/www/railsapps/inventory/releases/20111128233407/Gemfile not found (Bundler::GemfileNotFound) 

명확히하기 위해 즉 현재 릴리스하지만 이후 삭제 된 오래된 일이 아니다.

제대로 작동하는 것처럼 보입니다. 즉, 새 코드를 픽업합니다. 예전 릴리스와 관련하여 문제가 있다고 생각하지 않습니다.

아이디어가 있으십니까?

답변

11

서버를 시작하기 전에 BUNDLE_GEMFILE 환경 변수를 설정해야합니다 (current/Gemfile). 당신의 unicorn.rb에서

23

잊지 마세요,

current_path = "/var/www/html/my project/current" 

before_exec do |server| 
    ENV['BUNDLE_GEMFILE'] = "#{current_path}/Gemfile" 
end 

여기 또한 http://blog.willj.net/2011/08/02/fixing-the-gemfile-not-found-bundlergemfilenotfound-error/

+1

그것에 대해 더 읽기 before_exec 블록을 추가 유니콘 설정 파일이 변경되는 경우, 당신은 수동으로 종료해야하고 유니콘 시작 새로운 설정을로드하려면 다시 – lulalala