任何其他方法绕过Illformed要求YAML :: Syck :: DefaultKey错误然后升级RubyGems?

时间:2012-02-15 14:53:00

标签: ruby rubygems gemspecs

我得到Invalid gemspec in [path/to/vendor/bundle/spree_api-1.0.0.gemspec]: Illformed requirement ["#<YAML::Syck::DefaultKey:0x2ac381f81938> 1.0.0"]几个宝石(所有Spree及其spree_ *要求)。我已经报告了这两个狂欢的问题(我怀疑他们改变了他们的构建线;以及托管者,site5,他们有一个过时的RubyGems版本,1.6.2)

stackoverflow上的

Several questions为此提供了解决方案,但没有一个适用于我。

  1. 我不能使用RVM升级到其他版本的Ruby,因为(v)主机已经安装了乘客,AFAIK只允许运行一个Ruby版本。我无法访问乘客设置,只能访问.htaccess文件夹中的public
  2. 我不能gem update --system,因为这需要 sudo ,我没有。
  3. 我很好奇为什么会出现这样的错误:是否可以通过自己构建gem来解决这个问题(例如从git开始),而不是从rubygems.org获取它。

    是否可以通过在我的开发机器上打包宝石来解决这个问题?我没有遇到那个问题,除了RubyGems版本之外,我的开发机器安装了完全相同的Ruby版本(我可以使用rvm就好了)。

1 个答案:

答案 0 :(得分:3)

你现在可能已经找到了解决这个问题的方法,但是如果你有权编写这些更改,这就是修复它的方法。

cd /path/to/vendor/bundle/并在文本编辑器中打开spree_api-1.0.0.gemspec。

删除#<YAML::Syck::DefaultKey:...>处的任意位置,并将其替换为>=

保存,返回您的Rails应用目录并运行bundle install