Ruby 从byebug调用的IRB将丢失上下文

Ruby 从byebug调用的IRB将丢失上下文,ruby,irb,byebug,Ruby,Irb,Byebug,当我从byebug断点调用IRB时,我似乎不在预期的上下文中。这是一只虫子还是我在做一些非常愚蠢的事情 $ ruby -v ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14] $ ruby test.rb test [3, 12] in test.rb 3: 4: def initialize 5: @a = "test" 6: puts @a 7: b

当我从byebug断点调用IRB时,我似乎不在预期的上下文中。这是一只虫子还是我在做一些非常愚蠢的事情

$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
$ ruby test.rb 
test

[3, 12] in test.rb
    3: 
    4:  def initialize
    5:      @a = "test"
    6:      puts @a
    7:      byebug
=>  8:      puts @a
    9:  end
   10: end
   11: 
   12: Test.new
(byebug) irb
2.2.0 :001 > @a
 => nil 

我希望@a是“test”,但它是未定义的/nil。

不要调用irb,你可以像使用irb一样使用byebug提示符。

这是一个bug,如果你想修复或至少研究它,你应该在byebug的问题跟踪器中打开一个问题。

它不是完全等效的(它不能处理多行代码)但它确实解决了80%的情况。我同意,多行代码是一个非常重要的特性,byebug似乎缺少它。当我无法粘贴新方法或多行条件语句时,我会感到卡住。你找到解决办法了吗?@ndbroadbent:试试撬:``需要撬';binding.pry;/然后运行它并使用$显示源代码。@MattW。谢谢,是的,我刚改用了
binding.pry
,这样好多了。尤其是my
~/.pryrc
中的
c
n
s
f
快捷方式。