процесс bundler ruby использует 99% ЦП на Mac при обновлении с Rails 3.0.9 до 3.1.0

#ruby-on-rails-3.1 #bundler

#ruby-on-rails-3.1 #упаковщик #bundler

Вопрос:

Я уже пробовал это пару раз. Я использую rvm, а ruby, который я использую, — ree 1.8.7. Запуск «обновления пакета» после изменения моего Gemfile приводит к зависанию процессора почти на 100%. Он работает уже больше часа. Есть ли что-то особенное, что мне нужно сделать?

Комментарии:

1. вы когда-нибудь разбирались в этом? Это только начало происходить со мной…

Ответ №1:

Я выяснил, как это отладить, и, таким образом, смог решить свои проблемы.

Краткая версия (основанная на моих, по общему признанию, поверхностных знаниях о bundler):

  • bundle update или bundle install оба посмотрите на свой Gemfile, а затем попытайтесь разрешить зависимости для указанных драгоценных камней. Скорее всего, именно этот шаг приводит к сгоранию вашего процессора (это должно произойти после его печати Fetching source index for http://rubygems.org/ )

С чем я столкнулся, так это с тем, что иногда Bundler застревает в бесконечном цикле (или, по крайней мере, дольше, чем я ждал), пытаясь разрешить конфликтующие требования. В моем случае для двух разных драгоценных камней потребовался третий драгоценный камень с разными требованиями к версии.

По какой-то причине bundler попал в бесконечный цикл (или в какой-то очень, очень длинный цикл), пытаясь разрешить зависимости.

Я в основном нашел эту проблему на github:https://github.com/carlhuda/bundler/issues/1450

что побудило меня попробовать эту команду:

DEBUG_RESOLVER=1 bundle install

Запуск этого выдал достаточный результат, чтобы я мог идентифицировать зависимость gem, которая сбивала с толку bundler. В моем случае это были два разных драгоценных камня, требующих разных версий builder gem.

Я исправил это, указав версию builder, которая будет работать для обоих gems:

gem 'builder', '~> 3.0.0'

Это уладило проблему, и в следующий раз, когда я запустил install или update, она завершилась в разумные сроки.

Я надеюсь, это поможет вам разобраться в вашей проблеме.