我的工作站:
$ 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 work unexpectedly - 但重新安装此问题并未解决我的问题。
问题 - 我最近使用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
我以前让Pry使用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将在binding.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的运行模块中的第21行中断?
如何安装Pry和Byebug以产生一组有效的宝石?
我保证会仔细记录这个答案,以免将来再次丢失! TIA。
已添加 - 在发布这个问题后,我做了更多的挖掘并遇到了这个问题:
https://plus.google.com/114275173749981855325/posts
这表明只应该安装pry和pry-nav,而不是pry-byebug。所以,我卸载了pry-byebug和ta-da!撬调试再次开始正常工作。
我为这么长的问题道歉,只是用这么简单的解决方案自己回答。希望,所有人都会坚持这个帖子作为改进,以及如何安装Pry"为未来。现有的"权威"关于pry安装的文档含糊不清且不准确(或者可能只是没有解决这个潜在的问题)。
谢谢你,再次,抱歉这个麻烦和混乱。
答案 0 :(得分:3)
卸载pry-nav
似乎让它再次正常工作:)
gem uninstall pry-nav