此代码在一台机器上运行,在另一台机器上运行怎么调试?

时间:2014-04-15 07:36:25

标签: ruby byebug

我有一个看起来像这样的函数:

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)和函数的第一行之间,引发ArgumentError。我插入了一个这样的断点:

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以太某处提升的。

因此;我该如何调试呢?

1 个答案:

答案 0 :(得分:2)

天启的答案;我的同事重新安装了Ruby,现在一切正常。我不确定是要删除这个问题,还是留下这个答案,或许可以为其他人节省几个小时的无意义调试。