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