jjzjj

exception

全部标签

ruby - 停留在 EdgeCase Ruby Koans 上的 about_methods.rb

我正在通过EdgeCaseRubyKoans(www.rubykoans.com)进行黑客攻击,并且卡在about_methods.rbhere中从第35行开始的方法上。.运行rake可预见地失败并告诉我查看第36行。我有理由确定我的assert_match是正确的(“0代表2”),但我不知道是什么失败了。assert_raise(___)行很可能应该在括号之间包含一些内容,但我不知道那应该是什么。任何提示或轻推?非常感谢。编辑:这是有问题的代码的一小段:defmy_global_method(a,b)a+bend-剪辑-deftest_calling_global_methods_w

ruby - 引发异常 : use instance or class?

我见过使用类引发异常的Ruby代码:raiseGoatException,"Maximumof3goatsperbumpercar."其他代码使用实例:raiseGoatException.new"Noleotardfoundsuitableforgoat."这两个都是以同样的方式获救的。是否有理由使用实例而不是类? 最佳答案 没有区别;在任何一种情况下都会实例化异常类。如果您提供一个字符串,作为new的参数或作为raise的第二个参数,它会被传递给initialize并且将成为异常实例的.message。例如:classGoatE

ruby-on-rails - 有可能 CanCan can :manage, :all except one or more method?

我在做:can:manage,:allifuser.role=='admin'can:approve,Anunciodo|anuncio|anuncio.try(:aprovado)==falseend我的第二种方法不起作用,因为:manage:all覆盖了它。有一种方法可以声明可以管理除批准之外的所有内容吗?在里面批准我只是做can:approve,Anunciodo|anuncio|user.role=='admin'&&anuncio.try(:aprovado)==falseend什么是更好的解决方案? 最佳答案 尝试换一种

Ruby 未定义的方法小写

我在以下代码段中遇到异常。谁能告诉我我做错了什么,我该如何预防?defself.find_by_data(data={})where(name_canonical:data['name'].downcase.gsub(/\s+/,''),fuel:data['fuel'],trim_canonical:data['trim'].downcase.gsub(/\s+/,''),year:data['year']).firstend异常(exception):/Users/charlie/Documents/WIP/projectx/ar_models.rb:35:in`find_by_d

ruby-on-rails - 如何将救援 block 移动到方法

我的一个模型中有以下方法来保存用户记录:defsave_user(params)beginsave_user_details(params)rescueActiveRecord::RecordInvalid=>ex{success:false,errors:ex.messages}rescueException=>exRails.logger.info(ex.message)Rails.logger.info(ex.backtrace.join(‘\n’){success:false,errors:’Someerroroccurred.}endend我们可以看到rescueblock很

ruby - 在 shell 命令失败时引发异常?

我正在用Ruby编写一些脚本,我需要通过shell命令与一些非Ruby代码交互。我知道至少有6differentways从Ruby执行shell命令,不幸的是,当shell命令失败时,这些似乎都不会停止执行。基本上,我正在寻找的东西相当于:set-oerrexit...在Bash脚本中。理想情况下,该解决方案会在命令失败时引发异常(即通过检查非零返回值),可能会使用stderr作为消息。这写起来并不难,但似乎应该已经存在了。有没有我找不到的选项? 最佳答案 Ruby2.6addsanexception:argument:system

ruby - 我可以在 Ruby 中出现异常时访问绑定(bind)吗

假设我有:begin2.timesdoa=11/0endrescueputs$!debuggerend在这个例子中,我想获取a的值。如果a在beginblock中初始化,那么我可以在救援时访问它。但是,在此示例中,a是block本地的。当我救援时,有没有办法在异常时刻获得绑定(bind)? 最佳答案 你不能在doblock中再放一个begin,rescueblock吗? 关于ruby-我可以在Ruby中出现异常时访问绑定(bind)吗,我们在StackOverflow上找到一个类似的问题

ruby-on-rails - 是什么导致了这个 rails ioerror closed stream?

我有一个Rails应用程序,在开发模式下运行(使用sqlite数据库)。该应用程序的目的是允许用户通过Java客户端上传文件。如果用户要上传一个文件夹,会递归上传里面的所有文件。如果用户要上传文件,文件将正常上传。这是我收到的错误:IOErrorinUploadedFilesController#newclosedstream这是应用程序跟踪:/usr/lib/ruby/1.8/tempfile.rb:167:in`close'/usr/lib/ruby/1.8/tempfile.rb:167:in`callback'/var/lib/gems/1.8/gems/activesuppo

ruby-on-rails - 如何获取异常以呈现 Rails 开发错误页面的纯文本版本?

我正在使用rails-api构建一个没有网络界面的API。当我在开发中遇到错误时,我希望只看到纯文本的错误消息和堆栈跟踪,而无需所有HTML包装。我如何覆盖全局异常处理,以便它在开发模式下以纯文本/JSON呈现堆栈跟踪,并在生产环境中呈现一般错误消息? 最佳答案 从安全的角度来看,我建议在生产代码中包含堆栈跟踪可能不是一个好主意。下面是我的做法:render:json=>{message:exception.message,stack_trace:exception.stacktrace}希望对您有所帮助。在Sam的澄清之后我可以添

Ruby "defined?"运算符工作错误?

所以,我们有代码:classFoodefbarputs"Beforeexistent:#{(defined?some_variable)}"puts"Beforenot_existent:#{(defined?nonexistent_variable)}"raise"error"some_variable=42rescueputs"exception"ensureputs"Ensureexistent:#{(defined?some_variable)}"puts"Ensurenot_existent:#{(defined?nonexistent_variable)}"endend然后