我使用该命令创建了一个全新的rails项目
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)
我已经搜索并搜索了这个问题的解决方案,但我似乎无法做到 找到其他经历过它的人。我正在开发Cygwin和我 如果这与它有关,就不会感到惊讶。
我尝试使用源代码创建一个Gemfile,并在其中创建一个gem
目录和捆绑安装仍然提供相同的错误。我跟着全部
故障排除步骤,重新安装Cygwin和所有包,一切。什么
我的眼睛一直是Fetching gem metadata
两次......是否有可能
bundler被某种循环所吸引?
答案 0 :(得分:20)
Cygwin的pthread_attr_getstack默认报告大约90k。我认为Cygwin报告的是已提交(旧到目前为止)的堆栈大小,而不是保留(总可用)大小。然后Ruby将其(即90k)视为有史以来的最大堆栈大小。
更改初始已提交堆栈大小:
peflags -X409600 `which ruby`
注意大写的-X。小写-x更改保留的堆栈大小,而不是最初提交的堆栈空间。
这为我修复了所有Ruby + Rails + Cygwin问题。
我不太了解Ruby或Cygwin的内部结构,知道哪个是正确的解决方案,但它可能就是其中之一。
答案 1 :(得分:1)
不幸的是,我不认为这个答案可能会有所帮助,因为它没有任何意义,但我通过以下方式解决了这个问题:
$ gem install rake
$ gem install bundler
$ bundle install
此时它没有遇到同样的错误。
答案 2 :(得分:0)
Windows二进制文件在可执行文件头中编码首选堆栈大小。 Cygwin二进制文件默认为大约2M。
你可以改变这个:
peflags -x8192000 `which ruby`
并重新运行'bundle install'。一段时间以来,它一直在为我工作。