Установка первого набора пакетов, уровень стека слишком глубокий
Я создал новый проект рельсов, используя команду
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
... возможно ли, что
связка попадает в какой-то цикл?
Ответы
Ответ 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'. Это работало для меня таким образом уже некоторое время.