启动Mongrel服务器时出现此错误...
$ script/server --debugger
=> Booting Mongrel
=> Rails 2.3.5 application starting on http://0.0.0.0:3000
config.gem: Unpacked gem authlogic-2.1.3 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.
=> Debugger enabled
=> Call with -d to detach
=> Ctrl-C to shutdown server
当我运行rake gems时:refresh_specs就像它表明我得到了另一个错误:
rake aborted!
undefined method `installed_source_index' for #<Gem::SourceIndex:0x100551a58>
有关如何解决这个问题的想法吗?
答案 0 :(得分:22)
我不确定为什么它在Authlogic中被破坏了,但我必须自己生成它。
在你的Rails项目中试试这个:
$提示符&GT; cd vendor / gems / authlogic-2.1.3
$提示符&GT; gem specification authlogic&gt; .specification
答案 1 :(得分:4)
我只是想来这里,因为我今天经历了同样的事情,除了有不同的宝石。
我正在更新hoptoad以使用通知程序作为gem而不是插件,Github页面中的一条指令是将gem解压缩到vendor / gem。
我在Mac OS X上,我解压缩了宝石:
$> rake gems:unpack GEM=hoptoad_notifier
在我这样做之后,我得到了指定的错误,并且gem实际上没有解包(它在vendor / gems中创建了目录,但实际上并没有解压缩gem)。
我从vendor / gems中删除了该目录,并再次尝试:
$> sudo rake gems:unpack GEM=hoptoad_notifier
这次工作,正确解压缩,没有错误。
答案 2 :(得分:3)
我相信这就是原因: http://github.com/binarylogic/authlogic/commit/05e452472616bd60bb81affc75a1cb3d95cf7857
所有者故意在.specification文件中添加了gitignore。 我猜你冻结这个特定的宝石,并在你的代码分支中的vendor / gems / ..下提交它。正如预期的那样,git会根据请求忽略这个特定的文件
答案 3 :(得分:1)
我不得不进入vendor / gems / authlogic并从.gitignore中删除'.specification'
完成后,您可以运行rake gems:refresh_specs
唯一的问题是,下次升级此gem时,坏的.gitignore会回来
答案 4 :(得分:1)
我有同样的“未知的创业板”问题。经过多次讨论后,我找到了以下食谱:
首先,我使用标准的“gem install authlogic”安装了gem,它将gem放在/Library/Ruby/Gems/1.8中。
在RadRails中,我使用了rake任务“gems:unpack”,它似乎收集了与你的应用相关的所有宝石,并根据需要将它们放在/ vendor / gems中。
然后我卸载了系统范围的gem以检查它是否真的有效:gem uninstall authlogic --install-dir = / Library / Ruby / Gems / 1.8
似乎运作良好。
答案 5 :(得分:0)
在生成.specification文件之前构建并安装gem
$提示符&GT; cd vendor / gems / authlogic-2.1.3
$提示符&GT; gem build authlogic.gemspec
$提示符&GT; gem install authlogic.gemspec
$提示符&GT; gem specification authlogic&gt; .specification