jjzjj

pry-rescue

全部标签

ruby - 从从 stdin 读取的 Ruby 脚本调用时,Pry 不会停止

我创建了一个控制台Ruby脚本,它使用ARGF从文件或标准输入加载数据,然后调用Pry。当我在(Pry暂停)中传递一个文件但在我使用stdin传递我的数据时失败(Pry不停止并且只是退出Ruby)时,这非常有效。这很奇怪,有人知道为什么吗?我想通过stdin传递数据并让Pry暂停。看,一个示例脚本:require'rubygems'require'pry'defpry_it(str)binding.pryendpry_it(ARGF.read)当我使用ARGV中的文件调用此应用程序时,我得到了正确的响应-暂停%bundleexecrubypry_test.rbfile.txtFrom:

当我在 'ensure' 中的 'retry' 时,Ruby 不为 'rescue'

考虑这个begin-rescue-ensureblock:attempts=0beginmake_service_call()rescueExceptionretryunlessattempts>2exit-1ensureattemps+=1end如果您按原样运行该代码,它会引发异常,因为没有名为“make_service_call()”的函数。因此,它会重试。但它会陷入无限循环,因为控件永远不会因为“重试”而进入“确保”状态。block的“确保”部分不应该确保无论“开始”或“救援”中发生什么,其中的代码都得到执行吗?当然,我可以在“开始”中增加计数-这不是重点。我只是问有关“确保”的

Ruby: else 没有 rescue 是没用的

我是ruby新手。我正在尝试编写一个apacheerror.log监视器。大部分已经完成,但我收到警告:否则没有救援是无用的。我不知道我做错了什么。Ruby是否希望我使用“unless”?classErrorMonitor@@previous_size=0@@counter=0definitialize()enddefprocessif@@counter>0@new_size=File.stat('/var/log/apache2/error.log').sizeif@new_size>@@previous_sizeforiin@@previous_size..@new_size-@@

ruby - 在不修改 Gemfile 或使用 `require` 的情况下在 gems 中使用 Pry

我正在尝试调试Rails应用程序使用的gem。我在本地克隆了Gem以四处窥探(并且还允许我做一些不错的事情,例如gitbisect等)#Gemfilegem"active_admin",path:"~/dev-forks/active_admin"但是,我经常坚持将Pry添加到某个Gemfile以便能够使用它,或者在代码中调用require"pry",即使我不希望它在其中.例如,有时我会忘记它,修复错误,然后在Gemfile中使用Pry提交项目。如果我不这样做,将出现LoadError,无法加载此类文件--pry(LoadError)。我必须管理我在不同的上下文(Rails项目、Gem

ruby-on-rails - 在 Rails 中使用 rescue

我正在处理以下作品;defindex@user=User.find(params[:id])rescueflash[:notice]="ERROR"redirect_to(:action=>'index')elseflash[:notice]="OK"redirect_to(:action=>'index')end现在无论我是否拥有正确的ID,我总是在我看来“OK”,我做错了什么?当我在数据库中没有ID时,我需要它来显示“错误”。我也尝试过使用rescueActiveRecord::RecordNotFound但同样的事情发生了。感谢所有帮助。 最佳答案

ruby - 让 Ruby block /命令在没有空白 'rescue' block 的情况下静默失败

假设我想要运行一个调用,如果它失败了,也没什么大不了的;该程序可以继续没有问题。(我知道这通常是不好的做法,但想象一个假设的、快速的一次性脚本,而不是一个大项目)我被教导这样做的方式是:beginthing_to_tryrescue#awkwardblankrescueblockendnext_thing当然,还有其他方法可以做到这一点,包括使用ensure之类的。但是有没有办法让方法调用/block在没有困惑的空白block的情况下静默失败? 最佳答案 思路是一样的,只是少了一点冗长,不过你可以使用内联语法thing_to_try

ruby - 为什么我们应该避免以其修饰符形式使用 rescue?

我会定义值(value)。但是这个值可能在散列的键值中。如果此键不存在,我将使用rescue定义值为nil。例如foo=bar[:a][:b][:c]救援nil但在实践中告诉我糟糕的风格,因为我在其修饰符形式中使用了rescue。我将更改逻辑以使用检查三个条件。foo=bar[:a][:b][:c]ifbar.key?(:a)&&bar[:a].key?(:b)&&bar[:a][:b].key?(:c)我真的很想知道为什么我们应该避免使用修饰符形式的rescue? 最佳答案 Whyshouldweavoidusingrescuei

ruby-on-rails - 让 Byebug 在不退出 Pry 的情况下完成执行

当我在Rails中使用Byebug设置断点时,有时我希望它完成执行,但github上的指南说使用exit也会退出Pry。如果断点在循环中,重复输入continue会很烦人。有没有办法在不退出Rails控制台的情况下停止byebug? 最佳答案 在Rails控制台或Rails服务器中运行byebug时,我通常只通过按Ctrl+D退出byebug。这种方法的问题是,如果您在Rails的服务器中执行此操作,那么Byebug将不会停止并在下次它在代码中的任何地方遇到byebug语句时进行调试。但它在Rails控制台中完美运行。

ruby-on-rails - 这个 Rails4 错误是什么意思?致命的 : exception reentered . .. `rescue in rollback_active_record_state!'

我在我的Rails4约会安排应用程序中遇到了几个错误,我似乎无法更正或找出根本原因。我的种子文件总是因众所周知的“错误,堆栈级别太深”而中断。但是当我运行我认为它正在中断的方法时,我得到了这个不同的错误:Seedingtimeslotsforworkdayno.1(0.5ms)SAVEPOINTactive_record_1(0.5ms)ROLLBACKTOSAVEPOINTactive_record_1fatal:exceptionreenteredfrom/Users/rskelley/.rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.

ruby - 如何要求 ruby​​ pry 停止所有其他线程

我正在尝试调试多线程ruby​​脚本,问题是我什么时候做binding.pry其他线程继续向控制台发送输出。如何让它们在binding.pry处停止,然后在我退出时重新启动?我想在.pryrc中有一种方法可以做到这一点 最佳答案 这听起来像是您提议使用binding.pry的调用来询问所有子线程并暂停它们,直到您结束prysession。由于技术和实际原因,这是不可能的。Binding和Thread类不是这样工作的,Ruby中的多线程也不是那样工作的。Ruby中的线程只能通过调用Kernel#sleep或Thread.stop来暂停