2016-10-20 4 views
0

私のルビーMinitestは、このようなエラーで失敗している:RubyでMinitestを実行しているときに例外がスローされる場所を見つける方法はありますか?

<"undefined method `Error' for Api:Module"> 

それが実際に不足している方法ではありません、それはクラスである:

class Api::Error 

このクラスはlibに/ APIで定義されています/error.rb。

私は、レール内のconfig/environment.rbの2アプリケーションに次の行を追加してみました:

config.autoload_paths += %W(#{RAILS_ROOT}/lib) 

それは何もしません。私はRAILS_ROOTがどこに定義されているのか(それは標準のレール2の変数ですか?)、既存のソースコードのコメントアウトされた行からコピーしました。

クラスがロードされていることを確認する方法や、クラスが含まれていない場所を見つける方法はありますか? Api :: Errorサブクラスは多くのファイルで生成されており、それらをすべて編集したくありません。クラスが見つからないため、stacktraceは実際のraiseが発生する場所を表示しません。私がWebserviceモックで "get"メソッドを取得するとすぐに、私は入ることができないので、pryを使ってコードをステップ実行していません。

答えて

0

例外が発生した場所が見つかったら、私は実験しました。

raise Api::Error @p4_client 

これは私が行った変更は、次のとおりです:

これは、コードが問題を引き起こしている、もともとあったかである

明示的に新しいとのコンストラクタを呼び出すのではなく昇給ロジックをさせる
raise Api::Error.new(@p4_client) 

Rubyでは問題を解決しましたか?

明示的な呼び出しのないこのロジックは、1.8.7では正常に機能しましたが、1.9.3では失敗します。 すべてがActionpackのレイヤーを介して委任されています。

関連する問題