2

次のような関数があります。

def search_street_addresses(query, limit: 100)
  if query.is_a? String
    query = @address_parser.parse(query)

    fail ArgumentError, "Invalid address string" if query.nil?
  end

  # ...

そして、それは次のように呼び出されます:

begin
  results = @ndi.search_street_addresses(query)
rescue ArgumentError
  raise CommandError, "Failed to parse address"
end

私のマシンでは完璧に動作します。デバッガーを使用してコードをステップ実行しましたが、すべてが期待どおりに機能します。問題は、同僚のマシン (私とまったく同じコードとまったく同じ Ruby バージョン) で、一見不可能なことが起こることです。呼び出し@ndi.search_street_addresses(query)と関数の最初の行の間で、anArgumentErrorが発生します。次のようなブレークポイントを挿入しました。

begin
  require "byebug"; byebug
  results = @ndi.search_street_addresses(query)
# ...

関数にステップインしようとしましたが、関数に入ることなくArgumentError、最初の取得後に発生stepします。関数にブレークポイントも設定しました。

def search_street_addresses(query, limit: 100)
  require "byebug"; byebug
  if query.is_a? String
    # ...

しかし、ArgumentErrorブレークポイントがトリガーされずに発生します。これは彼のマシンでのみ発生しますが、私のマシンではすべてが完全に機能します。ArgumentErrorByebug の手の届かないところにある Ruby エーテルのどこかで が発生しているように見えるため、これをデバッグする方法がまったくわかりません。

そう; これをデバッグするにはどうすればよいですか?

4

1 に答える 1