草庐IT

异常切换

全部标签

Ruby 符号与字符串 - 来回切换会导致性能损失吗?

因此,虽然ruby​​String是全局唯一的,但ruby​​Symbol不是,因为它由id存储在后台某处:http://thoughtsincomputation.com/posts/ruby-symbols-what-are-they...这意味着使用符号使用更少的内存,假设您有一组指定的值,符号可以是(例如,您不想将用户输入的文本的每个字符串都变成一个符号)。我的问题是,虽然使用符号肯定有性能优势,但最终是否值得?我问是因为,例如,我使用符号编写大部分哈希:my_hash={:_id=>"123",:key=>"value"}但在ruby​​-mongo-driver中,所有键都

ruby - 访问 OpenStruct 中不存在的属性时引发异常

我正在尝试弄清楚如何使OpenStruct的子类(或与此相关的任何类)或散列在我尝试访问尚未设置的属性时引发自定义异常.我无法让define_method和method_missing执行此操作,所以我不知道应该如何在Ruby中完成。这是一个例子:classRequest我可以想象它必须是这样的:classHash#iftryingtoaccesskey:#1)keyexists,returnkey#2)keydoesn'texist,raiseexceptionend编辑:存在的属性不应引发异常。我正在寻找的功能是让我可以自由访问属性,如果它不存在,我的自定义异常将被引发。

ruby - 重新引发异常与子异常

我有C#背景,我通常会使用包含在父异常中的原始异常来重新引发异常。Ruby中是否有类似的概念?如何在维护较低级别异常的上下文的同时检测并引发异常? 最佳答案 看看演讲中的技巧ExceptionalRuby作者:AvdiGrimm:classMyErrorerrorraiseMyError.new("ErrorB",error)end 关于ruby-重新引发异常与子异常,我们在StackOverflow上找到一个类似的问题: https://stackoverf

ruby - 将异常处理作为 Ruby 中的常用方法

有人能告诉我有没有办法将异常处理作为一种通用方法并在方法中使用它?让我进一步解释一下。例如我有以下方法defadd(num1,num2)beginnum1+num2rescueException=>eraiseeendenddefdivide(num1,num2)beginnum1/num2rescueException=>eraiseeendend如您所见,尽管我的方法只需要一行,但由于异常处理代码,该方法变得更大了。我正在寻找的是一个更slim的解决方案,比如(只是一个想法)defadd(num1,num2)num1+num2unlessraise_exceptionenddefd

ruby-on-rails - 在 Rails 项目中保留自定义异常定义的常规位置是什么?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion当像这样创建自己的自定义异常时classThingExploded保存这些东西的好地方在哪里?我在考虑lib/exceptions.rb...并且还在考虑以某种方式将它们放在更靠近使用它们的代码处是否更合适。

ruby-on-rails - Ruby on Rails 3 + Apache2 + Phusion Passenger:Bundler::GemNotFound 异常

我正在尝试使用PhusionPassenger在Apache2服务器上部署Rails应用程序。虽然一切都在本地运行良好,但我在部署时遇到了臭名昭著的“Bundler::GemNotFound”错误:Couldnotfindabstract-1.0.0inanyofthesources(Bundler::GemNotFound)我所有的gem都安装在我的本地主文件夹中。因此,我的Apache2配置文件中的乘客配置行如下:LoadModulepassenger_module/home/regis/.gem/gems/passenger-3.0.7/ext/apache2/mod_passe

Ruby:切换 bool 内联?

如何使用内联方法获得Ruby中bool值的相反值(我知道它被转换为0/1)?假设我有给定的实例:classVotedefreturn_oppositeself.valueendend这显然什么都不做,但我似乎找不到像opposite()之类的简单而简短的方法。是否存在这样的事情,我只是没有在文档中查看正确的位置?如果一个不存在,是否有一个非常短的三元组可以将其从1=>0或0=>1切换? 最佳答案 我喜欢用这个@object.boolean=!@object.boolean 关于Ruby:

ruby - 如何在安装的不同版本的 gem 之间切换?

我在本地机器上安装了三个版本的Rack(rack(1.4.1,1.3.6,1.3.5))。对于某些gem(比如Cucumber),需要低版本的rack才能激活?我已经尝试过bundle但没有什么用。执行时,cucumber仍将使用系统版本为1.4.1的已激活Rack。Bundle指定应安装哪个gem但不确保将激活哪个gem。如何激活特定版本的rack? 最佳答案 您可以在项目的gemfile中指定一个版本gem"rack","1.3.5"由matt指出:使用Gemfile中指定的gem:bundleexeccucumber

ruby-on-rails - Rails 4 to_json 产生意外异常 nil 不是符号

我正在将Rails3应用程序升级到Rails4。在Rails3中,包含ActiveRecord对象数组的散列的json序列化工作正常;现在在Rails4中它有不可预测的结果。这是一个在Rails4上因TypeErrorException:nilisnotasymbol而失败的示例对象{1230=>[#,#]}现在如果我拿另一个类似的物体;包含一组ActiveRecord对象的哈希并运行to_json它适用于这个...{1234=>[#,#]} 最佳答案 支持我的QuestionAnswerResponse模型的View没有id列,而

ruby-on-rails - 模拟 rspec 中的错误/异常(不仅仅是它的类型)

我有一段代码是这样的:defsome_methodbegindo_some_stuffrescueWWW::Mechanize::ResponseCodeError=>eife.response_code.to_i==503handle_the_situationendendend我想测试ife.response_code.to_i==503部分发生了什么。我可以模拟do_some_stuff以抛出正确类型的异常:whatever.should_receive(:do_some_stuff).and_raise(WWW::Mechanize::ResponseCodeError)但是我