Ruby Pry安装结果奇怪?

4

我的工作站:

$ uname -a
Linux dsktop 3.13.0-77-generic #121-Ubuntu SMP Wed Jan 20 10:50:42 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux-gnu]
# (also same behavior with ruby 2.3.1)

我已经研究过这个问题,找到了 pry-nav无法正常工作的解决方法,但是按照那个问题重新安装并没有解决我的问题。

问题——我最近使用Brightbox Cloud ppa资源在系统范围内安装了Ruby 2.2和2.3:

$ sudo apt-add-repository ppa:brightbox/ruby-ng
$ sudo apt-get update
$ sudo apt-get install ruby2.3 ruby2.3-dev

然后安装Pry gem及相关依赖项:

$ sudo gem install pry pry-nav pry-byebug

导致了这个结果:
$ sudo gem list pry

*** LOCAL GEMS ***

pry (0.10.3)
pry-byebug (3.3.0)
pry-nav (0.2.4)

还需要稍微开放一下文件访问权限:

$ sudo chmod -R 755 /var/lib/gems
$ sudo chmod    755 /usr/local/bin/pry
$ sudo chmod    755 /usr/local/bin/byebug

我之前在一个使用Ruby 1.9和2.1的旧RVM环境中成功地安装了Pry,并且一切运行良好,但是现在似乎“失去了配方”,或者有些微妙的变化(?)。哦,而且没有Rails来使事情复杂化,只有简单的Ruby脚本。
当我运行类似以下代码的脚本(并且在RVM环境和私有安装的gems上工作正常):
require 'pry'
binding.pry

args = ARGV.join( ' ' )
# Check that only numbers 0..9, arithmetical operators +, -, * and /,
# decimal, comma, space and parentheses () are present in args:

当然,期望 Pry-Byebug 在绑定.pry方法调用后在下一行设置断点。但是,显示了以下断点(?):

From: /var/lib/gems/2.2.0/gems/pry-nav-0.2.4/lib/pry-nav/tracer.rb @ line 21 PryNav::Tracer#run:

    12: def run(&block)
    13:   # For performance, disable any tracers while in the console.
    14:   # Unfortunately doesn't work in 1.9.2 because of
    15:   # http://redmine.ruby-lang.org/issues/3921. Works fine in 1.8.7 and 1.9.3.
    16:   stop unless RUBY_VERSION == '1.9.2'
    17: 
    18:   return_value = nil
    19:   command = catch(:breakout_nav) do      # Coordinates with PryNav::Commands
    20:     return_value = yield
 => 21:     {}    # Nothing thrown == no navigational command
    22:   end
    23: 
    24:   # Adjust tracer based on command
    25:   if process_command(command)
    26:     start
    27:   else
    28:     stop if RUBY_VERSION == '1.9.2'
    29:     if @pry_start_options[:pry_remote] && PryNav.current_remote_server
    30:       PryNav.current_remote_server.teardown
    31:     end
    32:   end
    33: 
    34:   return_value
    35: end

pry> 

那么,这里发生了什么?为什么Pry在.../pry-nav/tracer.rb的run模块的第21行中断?

Pry和Byebug必须如何安装才能得到一组可工作的宝石?

我承诺仔细记录这个答案,以便将来不会再丢失!谢谢。

添加--在发布此问题后,我进行了更多的挖掘,并找到了以下内容:

https://plus.google.com/114275173749981855325/posts

这段文字建议只安装pry和pry-nav,而不是pry-byebug。所以我卸载了pry-byebug,然后Pry调试再次正常工作。

很抱歉我提出了一个如此冗长的问题,只为用一个简单的解决方案回答它。希望这篇文章能成为未来“如何安装Pry”的改进。现有的关于Pry安装的“权威”文档存在歧义和错误(或者可能只是没有涉及到这个潜在问题)。

谢谢你们,再次对造成的麻烦和困惑表示抱歉。


你可以添加你的答案并接受它,但也许要总结一下,因为似乎包含了很多不太有用的文本。 - osman
@Lorin所提到的帖子是http://thecuriousrubyprogrammer.blogspot.com/2015/08/ruby-interactive-debugging-with-pry.html。 - Dorian
可能是与 pry-nav 在意料之外的工作 相关的重复问题。 - Dorian
1个回答

3
卸载pry-nav似乎可以让它正常工作 :)
gem uninstall pry-nav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接