如何将多行代码复制到byebug中?
How to copy multiple lines of code into byebug?
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 接受多行代码,这样我就可以 copy/paste 直接从控制器之类的地方进入 byebug 停止的 rails 服务器?
其他想法
在console中按ctrl+d退出byebug,然后浏览器报错,然后复制代码到浏览器即可,但同样的事情发生了,如果代码全部在一行中,它会接受代码:
..但否则会出现与上述语法错误相同的错误。
对我有用的是只需复制所有代码并将其粘贴到我们粘贴 link 的浏览器中,不要单击回车。它会将其格式化为一行。然后只需复制并粘贴到 byebug cli。
评论里已经给你答案了,我这里正式化一下。
您无需尝试复制和粘贴要执行的代码行,只需使用 step
来“逐步”执行代码即可。 Byebug's documentation 为您提供了可以使用的命令列表。 Step 将 运行 您的程序一次一行。
def index
byebug
init_item = {
a: "foo", b: "bar"
}
// omitted code
进入上面的断点,init_item
将为nil。命令step
(或s
)将使代码前进一行,之后,init_item
将被初始化为我们指定的内容。
有时 byebug 会“向下”输入几行,但使用 up
(向上调用堆栈)会让您导航到您感兴趣的行。
无需将代码复制粘贴到 byebug 中,您只需 step
即可。
我使用 gem pry-byebug,它具有您想要的行为,您可以粘贴多行代码而无需立即执行。
https://github.com/deivid-rodriguez/pry-byebug
您可以将它添加到您的 gem 文件中并使用 binding.pry
设置断点
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 接受多行代码,这样我就可以 copy/paste 直接从控制器之类的地方进入 byebug 停止的 rails 服务器?
其他想法
在console中按ctrl+d退出byebug,然后浏览器报错,然后复制代码到浏览器即可,但同样的事情发生了,如果代码全部在一行中,它会接受代码:
..但否则会出现与上述语法错误相同的错误。
对我有用的是只需复制所有代码并将其粘贴到我们粘贴 link 的浏览器中,不要单击回车。它会将其格式化为一行。然后只需复制并粘贴到 byebug cli。
评论里已经给你答案了,我这里正式化一下。
您无需尝试复制和粘贴要执行的代码行,只需使用 step
来“逐步”执行代码即可。 Byebug's documentation 为您提供了可以使用的命令列表。 Step 将 运行 您的程序一次一行。
def index
byebug
init_item = {
a: "foo", b: "bar"
}
// omitted code
进入上面的断点,init_item
将为nil。命令step
(或s
)将使代码前进一行,之后,init_item
将被初始化为我们指定的内容。
有时 byebug 会“向下”输入几行,但使用 up
(向上调用堆栈)会让您导航到您感兴趣的行。
无需将代码复制粘贴到 byebug 中,您只需 step
即可。
我使用 gem pry-byebug,它具有您想要的行为,您可以粘贴多行代码而无需立即执行。
https://github.com/deivid-rodriguez/pry-byebug
您可以将它添加到您的 gem 文件中并使用 binding.pry