Gem::Specification.reset期间未解决的规范:

215

启动 Guard 时,我得到了以下输出:

$ guard
WARN: Unresolved specs during Gem::Specification.reset:
      lumberjack (>= 1.0.2)
      ffi (>= 0.5.0)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.

这是什么意思,我该怎么修复它?

Guardfile的内容:

guard 'livereload' do
    watch(%r{.+\.(css|js|html)$})
end
guard 'sass', :input => 'css', :style => :compressed, :extension => '.min.css'

2
我也遇到了这个问题,甚至没有运行guard。 - Douglas G. Allen
如果你正在使用RVM,那么这篇文章非常有帮助。 - GDP2
我的意见是:当我运行 RSpec 时,遇到了类似的错误;虽然我在我的机器上有这些 gems,但被告知要运行 gem cleanup< gem >;相反,我运行了bundle exec rspec< file >,结果它成功了。 - J.R. Bob Dobbs
11个回答

292

我只是在运行RSpec时遇到了这个问题。据我所知,这意味着您的系统上安装了多个列出的gems版本,而RSpec不确定要使用哪一个。卸载旧版本的gems后,警告消失了。

您可以尝试:

gem cleanup lumberjack
或者:
gem list lumberjack

gem uninstall lumberjack
如果你正在使用Bundler,你可以尝试bundle exec guard(或者在我的情况下是bundle exec rspec)。

3
你帮我找到了正确的解决方案。在运行“gem cleanup”时我一直遇到错误,后来找到了这篇文章:https://dev59.com/WW865IYBdhLWcg3wEKSZ#4060347结果发现是与 RVM 有关。当我运行'rvm gemset use global'并运行guard时,错误就消失了。 - reneruiz
我使用了rbenv和gem cleanup [gemname],对我来说完美地解决了问题。谢谢。 - Matt
3
我遇到了类似的问题,运行bundle update解决了它。 - mike
4
在执行了 rvm gemset use global 命令(以及 gem cleanup <gemname> 命令)之后,请确保使用 rvm gemset use default 命令切换回你的默认 gemset。 - AlexChaffee
我需要使用 gem uninstall <有问题的 gem>,但感谢您指出正确的方向并点赞! - reducing activity

185

1
我尝试了很多方法,包括重新安装RVM和Ruby,直到我偶然发现了这个解决方案,并且它对我起了作用。 - George
伙计,我浪费了几个小时来弄清楚为什么在运行测试时Textmate 2会出现故障。这解决了问题。 - Grocery
我需要使用 su/sudo 命令来执行此操作,因为它试图写入 /var/lib/gems 目录。除此之外 - 对于 jekyll 来说是有效的。 - einpoklum
我在调试RubyMine调试器时发现了这个问题:reline gem的Gem :: Specification.reset期间出现了未解决或模糊的规范。在强制清理后,RubyMine重新安装了调试器gems,这次似乎没有问题。 - Rich Steinmetz

27

使用Bundler。 调用bundle exec guard,而不是guard


14

顺便提一下:

gem cleanup

对我有效。

$ gem cleanup       

Cleaning up installed gems...
Attempting to uninstall builder-3.2.2
Successfully uninstalled builder-3.2.2
Attempting to uninstall amatch-0.3.0
Successfully uninstalled amatch-0.3.0
Attempting to uninstall tins-1.12.0
Successfully uninstalled tins-1.12.0
Clean Up Complete

13

这对我起作用了:

bundle clean --force

那么

bundle install
重新安装 gem。

6
我使用gem list gem-name; gem uninstall gem-name逐个清理宝石,因为存在依赖关系。之后,错误就不再显示了。

4

添加

'bundle exec'

在你的命令之前。

我使用 Ruby 2.4,在 Windows 上部署 Jekyll 时遇到了同样的问题,但已经解决。


1
如果有人到了这一步还没有找到答案,我给你留下这个。 gem update --system。我尝试了所有其他的答案都无济于事。希望这对你有用。

0
尝试使用gem uninstall <gem>,它将删除所有较新的gem版本。
然后会询问您:

"如果您删除此gem,这些依赖项将无法满足。继续删除?[YN]"

选择答案

"no"

以保留最新版本的gem和所有依赖项仍然有效。

0

记住,如果你想使用 guard,你必须将 gem guard 添加到 Gemfile 中。

group :developement, :test do
  gem 'guard'
end

然后,运行

bundle install

希望这能对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接