1. ホーム
  2. ruby

[解決済み] Ruby で例外を発生させずに現在のスタックトレースを取得する

2022-04-28 05:16:32

質問

Rails 3 アプリで現在のバックトレース (スタックトレース) を記録したい なし 例外が発生します。何かいい方法はありませんか?

なぜこれが必要なのでしょうか?Railsがテンプレートを探すときに行われる呼び出しをトレースして、オーバーライドする処理の一部を選択できるようにしようとしています(私の特定のサブクラスのコントローラのビューパスを変更したいからです)。

ファイルから呼び出したいのですが。 gems\actionpack-3.2.3\lib\action_dispatch\middleware\templates\rescues\missing_template.erb . ベストプラクティスではないことは承知していますが、テンプレートの検索が発生するところからスタックの下流にあることは承知しています。

どのように解決するのですか?

を使用することができます。 Kernel#caller :

# /tmp/caller.rb

def foo 
  puts caller # Kernel#caller returns an array of strings
end

def bar 
  foo 
end

def baz 
  bar 
end

baz

出力します。

caller.rb:8:in `bar'
caller.rb:12:in `baz'
caller.rb:15:in `<main>'