2

新しいバージョンの bitly および rspec gem で確実に動作するように gem を更新していますが、奇妙な問題に遭遇しました。

すべてのテストが新しい gem でパスすることを確認するために実行guardすると、TypeError が発生します。ただし、テストスイートを直接実行するとrspec、すべて合格し、エラーはスローされません。

シバン全体を見たい場合は、私のコードを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: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 '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:
/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:/Users/jstim/.rvm/gems/ruby-1.9 から「実行」
します。 2-p290/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:10:in '自動実行でブロック'

追加のコードを含めることができるかどうか教えてください。ありがとう!

4

1 に答える 1

6

問題は、「lib/uncoil」では定義しますclass Uncoilが、「lib/uncoil/version」では定義することmodule Uncoilです。バージョンがロードされると、実際にはモジュールであるクラスを再度開こうとしているという点で競合が発生します (どちらが最初にロードされるかによって、その逆も同様です)。

実行時にrspec specバンドラーをまったく使用しないと仮定します(依存関係が管理されていないため、潜在的な問題、ところで、常に行う必要がありますbundle exec rspec spec)、唯一の場所である.gemspecをロードすることはありませんバージョン ファイルが必要です。おそらく、Bundler が gemspecs をロードし、それがバージョン ファイルをロードして競合を引き起こしていると考えられます。以前にこれを経験したことがない場合は、依存関係の 1 つ (おそらく Guard-rspec) が新しいバージョンで Bundler をロードするように変更されたと思います。

gemspec で依存関係のバージョンを指定することを検討してください。

于 2012-01-09T01:55:15.193 に答える