Вопрос

Мы развертываем с помощью CAP и используем сценарий, который отправляет USR2 в процесс Unicorn для перезагрузки, и обычно работает, но время от времени он потерпит неудачу. Когда это происходит, глядя в журнал Unicorn, показывает, что он ищет Gemfile в старом каталоге релиза, который больше не существует.

Исключение :

/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)

Чтобы уточнить, это не текущий релиз, а старый, который с тех пор был удален.

Когда он работает, это, кажется, работает правильно - т.е. он забирает новый код - поэтому я не думаю, что он как -то застрял, ссылаясь на старый релиз.

Любые идеи?

Это было полезно?

Решение

Вы должны установить BUNDLE_GEMFILE переменная среды, прежде чем запустить сервер, укажите его на current/Gemfile.

Другие советы

В вашем Unicorn.rb добавьте блок перед_ексек

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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top