1

byebug似乎无法处理多行代码。

例子

我放入byebug控制器,接下来的代码行是(这些可以是任何东西,这里只是一个示例):

    payment_intent = Stripe::PaymentIntent.create({
      payment_method_types: ['card'],
      amount: @amount_minor_unit,
      currency: @currency,
      application_fee_amount: 123, # STODO
      transfer_data: {
        destination: @star.stripe_account,
      },
    })

但它这样做: 在此处输入图像描述

如果将代码编辑为一行,则成功:

payment_intent = Stripe::PaymentIntent.create({payment_method_types: ['card'],amount: @amount_minor_unit,currency: @currency,application_fee_amount: 123, transfer_data: {destination: @star.stripe_account,},})

但是这种手动编辑非常繁琐。如何让 byebug 接受多行代码,以便我可以直接从控制器之类的地方复制/粘贴到 byebug 停止的 Rails 服务器中?

其他想法

在控制台中按ctrl+d退出 byebug 后,浏览器出错,然后我可以将代码复制到浏览器中,但同样的事情发生了,如果代码都在一行上,它会接受代码:

在此处输入图像描述

..但其他错误与上述相同的语法错误。

4

3 回答 3

2

对我有用的是只需将所有代码复制到一个中并将其粘贴到我们粘贴链接的浏览器中,不要单击输入。它将在一行中格式化。然后只需复制并粘贴到 byebug cli 中。

于 2020-11-29T06:47:49.130 回答
1

评论已经给你答案了,但我会在这里正式化。

无需尝试复制和粘贴要执行的代码行,您只需使用step“步骤”通过代码即可。Byebug 的文档为您提供了可以使用的命令列表。Step 将一次运行您的程序一行。

def index
  byebug
  init_item = {
    a: "foo", b: "bar"
  }
  // omitted code

进入上面的断点,init_item将为零。命令step(或s)将代码前进一行,然后,init_item将初始化为我们指定的内容。

有时 byebug 会“向下”输入几行,但使用up(用于向上调用堆栈)将让您导航到您感兴趣的行。

无需将代码复制粘贴到 byebug 中,您只需step通过它即可。

于 2020-12-07T07:02:33.957 回答
1

我使用 gem pry-byebug 并且它具有您想要的行为,您可以粘贴多行代码而无需立即执行。

https://github.com/deivid-rodriguez/pry-byebug

您可以将其添加到您的 gem 文件并设置断点binding.pry

于 2020-12-07T16:40:59.777 回答