gpt4 book ai didi

Ruby:直接运行时规范通过,在 Guard 中运行时出现 TypeError

转载 作者:数据小太阳 更新时间:2023-10-29 08:28:42 25 4
gpt4 key购买 nike

我正在更新一个 gem 以确保它适用于新版本的 bitly 和 rspec gem,但我遇到了一个奇怪的问题。

当我运行 guard 以确保所有测试都通过新 gem 时,我得到一个 TypeError;但是,如果我直接使用 rspec 运行我的测试套件,它们都会通过并且不会抛出错误。

我的代码在 GitHub 上可用如果你想看到整个 shebang。

通过深入研究,我看到有人建议将类包装在它自己的模块中,以防止类名发生冲突,但由于它只与 rspec 一起工作,我希望我不需要添加另一层。

这是类型错误:

/Users/jstim/Documents/Programming/Ruby/uncoil/lib/uncoil.rb:6:in '': Uncoil is not a class (TypeError)
from /Users/jstim/Documents/Programming/Ruby/uncoil/spec/uncoil_spec.rb:1:in 'require_relative'
from /Users/jstim/Documents/Programming/Ruby/uncoil/spec/uncoil_spec.rb:1:in ''
from /Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in 'load'
from /Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in 'block in load_spec_files'
from /Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in 'map'
from /Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in 'load_spec_files'
from /Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/command_line.rb:22:in 'run'
from /Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:80:in 'run_in_process'
from /Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:69:in 'run'
from /Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:10:in 'block in autorun'

如果我可以包含额外的代码来提供帮助,请告诉我。谢谢!

最佳答案

问题在于,在“lib/uncoil”中,您定义了class Uncoil,但在“lib/uncoil/version”中,您定义了module Uncoil。如果加载了该版本,则会出现冲突,因为您试图重新打开一个实际上是模块的类(反之亦然,具体取决于先加载哪个)。

我假设当你运行 rspec spec 时它根本不使用 bundler(潜在的问题,顺便说一句,因为你的依赖关系没有被管理,所以你应该总是做 bundle exec rspec spec),因此它永远不会加载 .gemspec,这是您唯一需要版本文件的地方。据推测,Bundler 会加载 gemspecs,而 gemspecs 又会加载版本文件,从而导致冲突。如果您以前没有遇到过这种情况,我猜您的依赖项之一(可能是 guard-rspec)已更改为在较新版本中加载 Bundler。

您可以考虑在 gemspec 中指定依赖项的版本。

关于Ruby:直接运行时规范通过,在 Guard 中运行时出现 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8782736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com