第一次捆绑安装,堆栈级别太深

2024-03-06

我使用命令创建了一个全新的 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)
  

gist.github.com/3956513 http://gist.github.com/3956513

我已经搜索并搜索了这个问题的解决方案,但我似乎无法 找到其他经历过这种情况的人。我正在 Cygwin 上进行开发,并且我 如果这与此有关,我不会感到惊讶。

我尝试创建一个 Gemfile,其中仅包含源代码和一个空的 gem 目录和捆绑安装仍然给出相同的错误。我已经关注了所有 故障排除步骤,重新安装 Cygwin 和所有软件包,一切。什么 一直吸引我眼球的是Fetching gem metadata两次……有没有可能 捆绑器陷入某种循环?


Cygwin 的 pthread_attr_getstack 默认报告大约 90k。我认为 Cygwin 正在报告坚定的(到目前为止使用的)堆栈大小,而不是reserved(总共可用)大小。然后 Ruby 将其(即 90k)视为有史以来的最大堆栈大小。

要更改初始坚定的堆栈大小:

peflags -X409600 `which ruby`

请注意大写的 -X。小写 -x 更改保留的堆栈大小,而不是初始提交的堆栈空间。

这为我解决了所有 Ruby+Rails+Cygwin 问题。

我不太了解 Ruby 或 Cygwin 的内部结构,无法知道哪个是正确的解决方案,但它可能是其中之一。

  • 西格温报告reservedpthread_attr_getstack 中的堆栈大小。
  • Ruby 添加了一个构建步骤来运行上面的 peflags 命令。
  • Ruby 以不同的方式确定可用的堆栈空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一次捆绑安装,堆栈级别太深 的相关文章

随机推荐