运行Chef时,RubyGems抛出一个系统堆栈错误
我正在运行Ruby 1.9.3p392,并且安装了最新的chef gem(11.4.2)。当我尝试运行任何chef命令行实用程序时,会出现以下错误:运行Chef时,RubyGems抛出一个系统堆栈错误,ruby,rubygems,bundler,chef-infra,Ruby,Rubygems,Bundler,Chef Infra,我正在运行Ruby 1.9.3p392,并且安装了最新的chef gem(11.4.2)。当我尝试运行任何chef命令行实用程序时,会出现以下错误: bin/ruby\u noexec\u包装器:14:堆栈级别太深(SystemStackError) 事实上,运行以下命令也会引发类似的错误: require 'rubygems' gem 'chef' # or gem 'chef', '11.4.2' 再深入一点,我发现这个问题似乎起源于lib/ruby/site_ruby/1.9.1/rub
bin/ruby\u noexec\u包装器:14:堆栈级别太深(SystemStackError)
事实上,运行以下命令也会引发类似的错误:
require 'rubygems'
gem 'chef' # or gem 'chef', '11.4.2'
再深入一点,我发现这个问题似乎起源于lib/ruby/site_ruby/1.9.1/rubygems/requirement.rb:
lib/ruby/site\u ruby/1.9.1/rubygems/requirement.rb:24:堆栈级别太深(SystemStackError)
这很奇怪,因为该行是一个块的一部分,该块定义了表示各种需求操作的lambda散列(即,是versions=,是version1>=version2,等等)
我注意到在运行requirements.all?
时,requirements被设置为[[“>=”,#]]
。它似乎在评估=
我整天都在做这件事,但我还没有弄清真相。有人能帮我理解为什么RubyGems会抛出这个错误吗
谢谢
编辑:厨师在1.8.7上似乎运行良好。这可能是1.9.3的问题吗?如果你写
gem'chef',11.4.2'
,会发生什么?@RyanBigg不幸的是,同样的事情。它对我有用。你正在运行什么版本的rubygems?我在1.8.24上。@EricR我升级了我系统中的所有内容以匹配您的版本,并且所有内容都正常工作。或许可以尝试重新安装Ruby 1.9.3?@davogones我已经安装了。不走运。
class Gem::Requirement
OPS = { #:nodoc:
"=" => lambda { |v, r| v == r },
"!=" => lambda { |v, r| v != r },
">" => lambda { |v, r| v > r },
"<" => lambda { |v, r| v < r },
">=" => lambda { |v, r| v >= r }, # <-- line 24
"<=" => lambda { |v, r| v <= r },
"~>" => lambda { |v, r| v >= r && v.release < r.bump }
}
#...
end
def satisfied_by? version
raise ArgumentError, "Need a Gem::Version: #{version.inspect}" unless
Gem::Version === version
# #28965: syck has a bug with unquoted '=' YAML.loading as YAML::DefaultKey
requirements.all? { |op, rv| (OPS[op] || OPS["="]).call version, rv } # <-- line 198
end