Установка первого набора пакетов, уровень стека слишком глубокий - программирование

Установка первого набора пакетов, уровень стека слишком глубокий

Я создал новый проект рельсов, используя команду rails new qbc --database=mysql. Он создает все файлы отлично, но в комплекте установить его ошибки

$ bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Unfortunately, a fatal error has occurred. Please see the Bundler
troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!
/usr/bin/bundle:23: stack level too deep (SystemStackError)

gist.github.com/3956513

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

Я попытался создать Gemfile только с источником и одним драгоценным камнем в пустом каталог и установка пакета все равно дают ту же ошибку. Я следил за всеми шаги по устранению неполадок, переустановить Cygwin и все пакеты, все. Какие продолжает ловить глаз дважды Fetching gem metadata... возможно ли, что связка попадает в какой-то цикл?

4b9b3361

Ответ 1

Cygwin pthread_attr_getstack сообщает о 90k по умолчанию. Я думаю, Cygwin сообщает о размере зафиксированных (используемых до сих пор), а не зарезервированных (общий доступный) размер. Затем Ruby рассматривает это (т.е. 90k) как максимальный размер стека.

Чтобы изменить начальный размер зафиксированного:

peflags -X409600 `which ruby`

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

Это исправляет все проблемы Ruby + Rails + Cygwin для меня.

Я не знаю внутренностей Ruby или Cygwin достаточно хорошо, чтобы знать, что является правильным исправлением, но, возможно, это один из них.

  • Cygwin сообщает зарезервированный размер стека из pthread_attr_getstack.
  • Ruby добавляет шаг сборки для запуска команды peflags выше.
  • Ruby определяет доступное пространство стека другим способом.

Ответ 2

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

$ gem install rake
$ gem install bundler

$ bundle install

Он работал в этой точке, не сталкиваясь с той же ошибкой.

Ответ 3

двоичные файлы Windows кодируют предпочтительный размер стека в исполняемом заголовке. По умолчанию двоичные файлы Cygwin имеют значение около 2M.

Вы можете изменить это:

peflags -x8192000 `which ruby`

и повторите запуск 'bundle install'. Это работало для меня таким образом уже некоторое время.