Module: Bulletproof::Runtime::CallstackFilter

Defined in:
lib/bulletproof/runtime/callstack_filter.rb

Overview

コールスタックからアプリケーションコードのフレームを探すユーティリティ

gem 内部・bulletproof 自身のフレームを除外し、 最初にヒットしたアプリケーションコードの位置を返す。

Constant Summary collapse

EXCLUDE_PATTERNS =

除外するパスのパターン(gem・bulletproof 自身・eval を対象外にする)

[
  %r{/gems/}, # bundler でインストールされた gem
  %r{lib/bulletproof}, # bulletproof 自身
  /\A\(eval\)/ # eval されたコード
].freeze

Class Method Summary collapse

Class Method Details

.app_location(locations) ⇒ String?

Returns "path/to/file.rb:42:in 'method_name'" 形式、見つからなければ nil.

Parameters:

  • locations (Array<Thread::Backtrace::Location>)

Returns:

  • (String, nil)

    "path/to/file.rb:42:in 'method_name'" 形式、見つからなければ nil



19
20
21
22
23
24
25
# File 'lib/bulletproof/runtime/callstack_filter.rb', line 19

def self.app_location(locations)
  frame = locations.find do |loc|
    path = loc.absolute_path || loc.path || ""
    EXCLUDE_PATTERNS.none? { |pattern| path.match?(pattern) }
  end
  frame&.to_s
end