8

モデルの 1 つで検証が失敗する Ruby on Rails アプリケーションがあります。この検証が失敗する可能性があるコード ベースには、さまざまなエントリ ポイントがあります。私はそれがどこから来ているのかを理解することに興味があります。これは単純な検証方法であるため、関連する例外はありません。メソッドから false を返すだけで、保存は失敗します。

現在、バックトレースをログに記録して、この検証がどのサービス/ルートから発生したかを突き止めて、検証に失敗するためにこのオブジェクトの状態が変化した原因を確認することはできますか?

4

2 に答える 2

15

あなたが試すことができますcaller()

def foo2
  puts caller
end
def foo
  foo2   #line5
end 
foo     #line 7

結果:

test.rb:5:in `foo'
test.rb:7:in `<main>'
于 2012-08-10T19:15:08.320 に答える
1

それを行う賢い方法はわかりませんが、これで仕事が完了します。素敵な小さな関数でラップすることもできます。例外をスローしてレスキューすることがパフォーマンスに影響するかどうかはわかりませんが、本番環境ではおそらくこのようなことをしたくないでしょう。

begin
  throw
rescue
  puts $!.backtrace
end
于 2012-08-10T18:28:22.250 に答える