工厂女孩“捆绑安装”期间的“无效的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,但我不知道gem
, rvm
和bundle
之间的区别是什么,我也不明白每个命令应该做什么。 我认为我通过Google找到的这篇博文对此有所帮助:
RVM和Bundler五秒钟
考虑到rvm和bundle应该自动管理一组gem,而gem
只管理gem,我看了一下gem命令。
我试过gem check
哪个IIRC什么也没做。 然后我尝试了gem cleanup
,它带来了一大堆想要卸载的gem。 相信我可以(可能)通过使用bundle install
回到我需要的位置,我让它进行卸载。 (虽然我不得不使用sudo gem cleanup
因为我缺少对所涉及的一些目录的写入权限)。
做完这个gem check
和gem 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
,我的问题更新中列出的步骤“解决”了“问题”。
如果有一种方法可以简单地将问题关闭为“ 答案不再是我的优先事项 ”,或者甚至只是“ 我继续前进 ”,那就太好了。 但事实并非如此。 这个“答案”至少会将这个问题从待查看的事物列表中删除。