我正在更新一个宝石,以确保它适用于新版本的bitly和rspec宝石,我遇到了一个奇怪的问题.
当我运行guard
以确保所有测试都通过新gem时,我得到一个TypeError; 但是,如果我直接运行我的测试套件只是rspec
他们都通过并且不抛出错误.
如果你想看到整个shebang,我的代码可以在GitHub上找到.
从挖掘开始,我看到人们建议将类包装在自己的模块中以防止类名冲突,但由于它只是正常工作rspec
,我希望我不需要添加另一层.
这是TypeError:
/Users/jstim/Documents/Programming/Ruby/uncoil/lib/uncoil.rb:6:in'':Uncoil不是
来自/ Users/jstim/Documents/Programming/Ruby/uncoil/spec/uncoil_spec 的类(TypeError).rb:1:
来自/Users/jstim/Documents/Programming/Ruby/uncoil/spec/uncoil_spec.rb:1:in'的'require_relative '
来自/Users/jstim/.rvm/gems/ruby-1.9.2 -p290/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:
来自/Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/的'load' rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:
来自/Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core的'block in load_spec_files' -2.8.0/lib/rspec/core/configuration.rb:698:
来自/Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/的'map' lib/rspec/core/configuration.rb:698:
来自/Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core的'load_spec_files' /command_line.rb:22:in运行
来自/Users/jstim/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb: 80:
来自/ Users/jstim /的'run_in_process' .rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:69:
来自/Users/jstim/.rvm/gems/ruby的'run' -1.9.2-p290/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:10:在'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中指定依赖项的版本.
归档时间: |
|
查看次数: |
979 次 |
最近记录: |