草庐IT

Ruby 构造函数和异常

Ruby新手,我想弄清楚使用什么习惯用法来将某些整数值限制为类的构造函数。根据我目前所做的,如果我在initialize()中引发异常,该对象仍会创建,但将处于无效状态(例如,某些nil实例变量中的值)。我不太明白我应该如何限制这些值而不进入看起来不必要的大步骤,例如限制对new()的访问。所以我的问题是,我可以通过什么机制来限制实例化对象的值范围? 最佳答案 嗯,你是完全正确的,即使initialize引发异常,对象仍然存在。然而,任何人都很难坚持引用,除非你从initialize中泄漏self就像我刚写的下面的代码一样:>>cl

ruby - Rexml - 带有内联文本和缩进子标签的 pretty-print

我正在使用REXML构建xml文档,并希望以特定方式输出到文本。该文档是一个CuePoint标签列表,我用Element.new和add_element生成的标签都像这样混合成一行:(stackoverflow在这里将它们分成两行,但想象一下以下内容一行):15359eventinst_5016359eventinst_50当我将它们保存到文件中时,我希望它们看起来像这样:15359eventinst_5016359eventinst_50我尝试将值2传递给.write函数以缩进它们:这会产生以下结果:xml.write($stdout,2)产生15359eventinst_50163

ruby - Pow、RVM 和 ZSH 不能一起工作

我正在尝试让Octopress(http://octopress.org/)正常工作,但我遇到了一些问题。我正在使用POW(http://pow.cx/),它似乎没有为我加载正确的Ruby版本(使用RVM)。它始终使用RVM默认的ruby​​版本,而不是.rvmrc中指定的版本。我在RVM中的默认Ruby版本是:ruby-1.9.3-p125。在我的.rvmrc文件中我有这个:rvmuse1.9.2我在访问我的网站时在浏览器中收到此错误:LoadError:cannotloadsuchfile--bundler/setup~/.rvm/rubies/ruby-1.9.3-p125/li

ruby - 使用 Ruby 1.9.3 和邮件 gem 进行字符编码

我正在尝试使用Rubymailgem解析电子邮件字符串,而且我在字符编码方面遇到了麻烦。获取以下电子邮件:MIME-Version:1.0Sender:foobar@example.comReceived:by10.142.239.17withHTTP;Thu,14Jun201206:00:18-0700(PDT)Date:Thu,14Jun201209:00:18-0400Delivered-To:foobar@gmail.comX-Google-Sender-Auth:MxfFrMybNjBoBt4O4GwAn9cMskoMessage-ID:Subject:Re:[LoremIp

ruby - 在 Ruby 中,String() 和 #to_s 有什么区别

String(1.1)==(1.1).to_s=>trueString(1.1)===(1.1).to_s=>true这两种强制方式有区别吗?如果可以,你能演示一下吗? 最佳答案 docsfortheStringmethod说:ConvertsargtoaStringbycallingitsto_smethod.所以通常它们是相同的,但也有一些差异——尽管您不太可能真正看到它们。String()检查其参数的类,如果它还不是String,则对其调用to_s。直接调用to_s意味着无论如何都会调用该方法。考虑类:classMyStrin

ruby-on-rails - ENV 变量中的 Capistrano 和 API key ?

我正在使用Capistrano部署我的Rails应用程序。我想在服务器上保存一些APIkey作为环境变量。我使用Capistrano部署的Rails应用程序应该可以访问这些APIkey。作为守护进程运行的单独的ruby​​文件也应该可以访问这些APIkey。在环境变量中设置APIkey似乎是理想的解决方案,但是,我无法在我的Rails应用程序中使用ENV["SOME_KEY"]访问它们。根据thispost,因为capistrano以非交互和非登录方式运行,~/.bashrc和~/.bash_profile未加载。流程图建议我应该使用$BASH_ENV。我可以只在$BASH_ENV中添

ruby-on-rails - 具有相同名称的类和模块 - 如何选择一个或另一个?

我遇到过以下情况:有ModuleA::ModuleB::ClassC.do_something在do_something的定义中我需要使用来自应用程序的模型defdo_something...data=Order.all...end但是也存在一个模块ModuleA::Order所以我得到一个错误undefinedmethod`all'forModuleA::Order:Module我通过做找到了解决方案defdo_something...data=Kernel.const_get('Order').all...end返回模型。我的问题是:最好的方法是什么?有没有更清洁的解决方案?(尽管

ruby - 使用 ncurses 和 ruby​​ 的最佳 gem

我有兴趣使用ruby​​创建一个命令行应用程序,它需要与用户进行适度复杂的交互。我想为此使用ncurses。使用ruby​​和ncurses的最佳gem是什么,或者我应该在ruby​​中使用stdlib实用程序? 最佳答案 rubyincludesbindings对于curses库。尽管顾名思义,itwillusencurses如果可能的话。第三方库通常在Ruby的curses或它们自己的绑定(bind)之上提供抽象。例如,ncursesw还包装了panel、menu和form扩展。当我使用Ruby的curses时,我用proper

ruby-on-rails - Nils 和方法链

我刚刚进入ruby​​世界,我需要帮助。假设b是nil。我希望以下代码返回nil而不是“NoMethodError:undefinedmethod”a.b.c("d").e我尝试的第一件事是重载NilClass的missing_method以简单地返回一个nil。这是我想要的行为,但我不想如此打扰。如果我能做这样的事情我会很高兴SafeNils.a.b.c("d").e所以这就像一种在本地重载NilClass行为的干净方法。我很想听听一些想法或很好的资源来深入研究这个问题。只要它相当干净,我也对其他方法持开放态度。非常感谢。 最佳答案

ruby - Sinatra 和 Grape API 在一起?

我一直在阅读,我发现了这个micro-frameworkcalledGrape对于ruby。我目前正在使用Sinatra处理网络界面,但我也想实现Grape来处理应用程序的API方面。我找不到有关此主题的任何有用建议。grape文档说:“Grape是一个用于Ruby的类似REST的API微框架。它旨在通过提供简单的DSL来轻松开发RESTfulAPI,从而在Rack上运行或补充现有的Web应用程序框架,例如Rails和Sinatra。”所以听起来应该有一种官方方式将两者结合起来,对吗?此应用程序也将在Heroku上运行。 最佳答案