工厂女孩“捆绑安装”期间的“无效的gemspec”消息(rails 3.1和ruby 1.9.2p290)

注意:
当我使用Ubuntu 11.10使用factory_girl gem进行bundle install时遇到意外消息时,我问了这个问题。 作为一个菜鸟我有……但仍然……不知道发生了什么。 下面的更新试图概述我为最终消除这些消息所做的工作。 我将问题放在一个稍微更相关的标题行,以防它可能对其他人有用。

我看看Factory Girl的README.md ,我看到:

    安装
      gem安装factory_girl
    或者将以下行添加到Gemfile:
      gem'factory_girl'
    并从您的shell运行bundle install。

    支持的Ruby版本
     Factory Girl 3.x系列支持Ruby 1.9.x.
    对于旧版本的Ruby,请使用Factory Girl 2.x系列。

因为我目前正在使用
Rails 3.1.0
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]

我将gem’factory_girl gem 'factory_girl'添加到我的Gemfile中并进行bundle update

但接下来我打开Getting Started.md文件并阅读

    更新你的Gemfile
    如果你正在使用Rails,你需要改变
     factory_girl_rails所需的版本:
      gem“factory_girl_rails”,“〜> 2.0”
    如果你不使用Rails,你只需要
    更改factory_girl所需的版本:
      gem“factory_girl”,“〜> 3.0”
    更新Gemfile后,您将需要更新捆绑包。

好的。 我从我的Gemfile中删除了gem’factory_girl gem 'factory_girl' ,而是添加了
gem "factory_girl_rails", "~> 2.0"
然后我再次尝试bundle update 。 这一次,没有快乐。

     $ bundle install
     [/usr/local/lib/ruby/gems/1.9.1/specifications/中的gemspec无效
       factory_girl_rails-2.0.0.gemspec]:格式错误的要求
       [“#3.0.7”]
     [/usr/local/lib/ruby/gems/1.9.1/specifications/中的gemspec无效
       factory_girl_rails-2.0.0.gemspec]:格式错误的要求 
       [“#3.0.7”]
    获取http://rubygems.org/的源索引
    使用rake(0.9.2.2) 
    使用ZenTest(4.7.0) 
     ...为简洁省略了一堆“使用”行...
    使用deepopenstruct(0.1.2) 
    使用factory_girl(3.0.0) 
    安装factory_girl_rails(2.0.0)inms中的gemspec无效
       [/usr/local/lib/ruby/gems/1.9.1/specifications/factory_girl_rails-2.0.0.gemspec]:
      不合格的要求[“#3.0.7”]  
    使用haml(3.1.4) 
    使用jquery-rails(1.0.19) 
     ...为简洁省略了一堆“使用”行...
    使用uglifier(1.2.4) 
    你的包很完整! 使用`bundle show [gemname]`来查看a
      已安装捆绑的gem。

所以现在我想知道(1)为什么遵循自述文件中的说明显然不起作用;(2)我应该怎么做我的Gemfile才能让工厂女孩微笑和富有成效?


更新

虽然收到我不理解的错误消息令人沮丧,但摆脱它们但不确定我做了什么 ,错误,“修复”事情也不那么特别。 那好吧。

rvm ,虽然我一直在使用bundle,但我不知道gemrvmbundle之间的区别是什么,我也不明白每个命令应该做什么。 我认为我通过Google找到的这篇博文对此有所帮助:
RVM和Bundler五秒钟

考虑到rvm和bundle应该自动管理一组gem,而gem只管理gem,我看了一下gem命令。

我试过gem check哪个IIRC什么也没做。 然后我尝试了gem cleanup ,它带来了一大堆想要卸载的gem。 相信我可以(可能)通过使用bundle install回到我需要的位置,我让它进行卸载。 (虽然我不得不使用sudo gem cleanup因为我缺少对所涉及的一些目录的写入权限)。

做完这个gem checkgem cleanup后回来干净。 但是, bundle check返回:

缺少以下gem
  * activesupport(3.1.0)
  * activemodel(3.1.0)
  * rack-cache(1.0.3)
  * actionpack(3.1.0)
使用`bundle install`安装缺少的gem

所以我做了bundle install然后(为什么不呢?) bundle update 。 这安装了上面列出的gem没有问题。 特别是,这次我没有得到Invalid gemspec或任何其他错误消息。 (欢呼!)

当然, bundle update没有任何作用,坦率地说,我期待它能做到。

因此,虽然我仍然不确定发生了什么,但我的问题的原始原因是有点,有点解决了。

我会在一个星期左右的时间内回答这个问题,看看是否有其他人想要提出任何意见。 在此之后,如果没有其他人提供更具信息性的答案,我想我会自己“回答”这个问题,然后将其关闭。

感谢所有帮助我推动更清洁gem的人。

我在尝试安装factory_girl_rails gem时遇到了同样的问题,并且能够通过删除有问题的规范文件然后运行来解决它

gem update –system

其次是

捆绑安装

gemspec中显然存在一些错误。 打开它,删除糟糕的位!

我个人用vim这样做:

 vim ~/.rvm/gems/ruby-1.8.7-p357/specifications/factory_girl_rails-1.7.0.gemspec :%s/".*YAML.*\ /"/ :wq 

然后重新捆绑

问题应该解决!

使用ruby 1.8.7和factory_girl_rails您可以将factory_girl的版本固定为2.6,然后让bundler完成剩下的工作。

 gem 'factory_girl', '~> 2.6' gem "factory_girl_rails" 

为我工作。

我不能再看到这个问题再开放了。 虽然我从来没有清楚地理解为什么我得到Invalid gemspec ,我的问题更新中列出的步骤“解决”了“问题”。

如果有一种方法可以简单地将问题关闭为“ 答案不再是我的优先事项 ”,或者甚至只是“ 我继续前进 ”,那就太好了。 但事实并非如此。 这个“答案”至少会将这个问题从待查看的事物列表中删除。