草庐IT

pry-stack_explorer

全部标签

ruby - 为什么我在 irb 1.9.3 中从 method_missing 得到 "stack level too deep"?

场景:-bash-3.2$irb-fruby-1.9.3-p0:001>@v={}=>{}ruby-1.9.3-p0:002>defmethod_missing(sym,*args);@v[sym];end=>nilruby-1.9.3-p0:003>a(irb):2:stackleveltoodeep(SystemStackError)-bash-3.2$我使用-f运行以避免加载任何irbrc内容。我希望在输入a时得到nil。这是怎么回事,有解决方法吗?我尝试用begin/rescueExceptionblock包装a但那没有做任何事情。1.9.2也会发生这种情况,但1.9.1不会。

ruby-on-rails - 无法在 pry 中访问本地方法变量

我有以下方法:defupdateloan=Loan.find(params[:id])pryrespond_withloan.update(loan_params)end所以我希望当我在控制台中窥探时,我应该能够键入loan并获取对象,但我却得到“未定义的局部变量或方法‘loan’”,我是不是做错了什么? 最佳答案 您需要使用binding.pry来加载当前对象范围内的pry(我认为pry只是加载一个没有范围的prysession。) 关于ruby-on-rails-无法在pry中访问本

html - Watir/Selenium2 在 Internet Explorer 9 中单击 iframe 内的元素后没有任何反应

我正在Ubuntu上使用Watir-WebDriver和Ruby1.9.2为网络编写自动测试。我有一些带有几个元素的iframe。我需要单击项目并检查会发生什么。看起来像:Sometitle当我点击按钮时,它应该创建菜单。但是当我点击带有watir-webdriver的按钮时,没有任何反应,就好像他没有按下一样。Watir不打印任何异常,但不按下按钮。此问题仅存在于InternetExplorer中。对于Firefox和Chrome,没有问题。我的代码如下所示:browser=Watir::Browser.new(:remote,:url=>"http://some_ip:4444/w

ruby - 如何在 Pry 中更改 ruby​​ 版本

由于RVM,我的命令行ruby​​是1.9.2,但是当我启动pry(指向1.9.2gem)时,它使用ruby​​1.8.7你知道pry指定的ruby​​版本在哪里吗?macflashy:~$rvminforuby:interpreter:"ruby"version:"1.9.2p290"date:"2011-07-09"platform:"x86_64-darwin11.1.0"patchlevel:"2011-07-09revision32553"full_version:"ruby1.9.2p290(2011-07-09revision32553)[x86_64-darwin11.

ruby-on-rails - 使用 Rails 控制台时 pry-stack_explorer 中的 NoMethodError

我正在为railsconsole使用pry。每当我在控制台中评估某些值时,NoMethodError会在bindings_equal?中引发,这是pry-stack_explorergem的一个方法。输入输出如下。这不是有害的,而是令人讨厌的。我想删除它。有人能帮忙吗?>bundleexecrailsconsoleLoadingdevelopmentenvironment(Rails4.1.5)Framenumber:0/21[1]pry(main)>[2]pry(main)>[3]pry(main)>1when_startedhookfailed:NoMethodError:priv

ruby - 如何在 Pry 中自定义 Ruby 命令的返回输出

我能够使用~/.pryrc中的Pry.config.prompt设置自定义Pry的提示,以便让Pry对children来说更简单。现在我想去掉返回输出:EnterRubycode>puts'hello'hello=>nilEnterRubycode>=>nil会让刚学编程的child感到困惑。我可以在Pry中抑制返回值输出吗? 最佳答案 有几种方法可以做到这一点。将;添加到每行的末尾,或者将默认的Pry.config.print替换为您自己的proc。例如,添加类似Pry.config.print=Proc.new{|output,

ruby - 如何在 pry 中运行带参数的文件

我可以像这样启动命令行应用程序的窥探sessionpry-r./todo.rb但是,如果我想调用列表函数pry-r./todo.rblist我收到一条错误消息。不用pry,我调用列表函数rubytodo.rblist这是错误信息/Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@global/gems/pry-0.9.10/lib/pry/repl_file_loader.rb:16:in`initialize':Nosuchfile:/Users/michaeljohnmitchell/Sites/todo/bin/list(Ru

ruby - 如何在 gem 的示例脚本中使用 pry-byebug?

我正在努力制作我的第一个gem,它不是Rails应用程序,是一个带有一些AI的井字游戏库,所以我可以和一个永远不会输的电脑对手比赛,如果可能。现在我正在尝试调试AI中的攻击策略,但我似乎无法弄清楚如何让pry-byebug在我的测试脚本中工作,具体来说,有像step、next等在点击binding.pry时工作。名为smart-tac-toe的gem具有以下目录结构:$lssmart-tac-toeexampleGemfileGemfile.lockGuardfilelibLICENSE.txtRakefileREADME.mdsmart_tac_toe.gemspecspectmp正

ruby : stack level too deep (SystemStackError) maxlimit

下面是我的示例代码:deftest(v)test(v-1)ifv>0pvend如果我调用test(11893)它工作正常。如果我有v>11893,它会抛出SystemStackError。如何增加此错误的限制? 最佳答案 MRI有tailrecursion优化默认关闭。但是一个人可能turniton:RubyVM::InstructionSequence.compile_option={tailcall_optimization:true,trace_instruction:false}此外,代码本身必须使用尾递归:deftest(

ruby - 使用 pry-byebug 设置条件断点

给定以下代码:require'pry-byebug'10.times.with_indexdo|i|binding.pryputsiend我想在pry-byebug中“循环直到i==5然后中断”。通过运行它helpbreak,您似乎可以通过“breakpoint#”或“line#”来识别断点。看起来你也可以使用条件,但我没有让它工作:尝试在第#行设置断点:$rubyfoo.rbFrom:/Users/max/Dropbox/work/tmp/pry_debug/foo.rb@line5:1:require'pry-byebug'2:3:10.times.with_indexdo|i|4