草庐IT

ruby - 一些简单的 Ruby 问题——迭代器、 block 和符号

我的背景是PHP和C#,但我真的很想学习RoR。为此,我开始阅读官方文档。我对一些代码示例有一些疑问。第一个是迭代器:classArraydefinject(n)each{|value|n=yield(n,value)}nenddefsuminject(0){|n,value|n+value}enddefproductinject(1){|n,value|n*value}endend我理解yield的意思是“在这里执行关联的block”。令我震惊的是|value|n=each的一部分。其他block对我来说更有意义,因为它们似乎模仿C#风格的lambda:publicintsum(in

ruby - Sinatra::Base.condition 实际上做了什么?

我遇到了sinatracondition方法,但对它的工作原理感到困惑。我有一段代码:defauthuserconditiondoredirect'/login'unlessuser_logged_in?endend它检查用户是否登录了某些路由,示例路由:get'/',:auth=>:userdoerb:indexenduser_logged_in?方法定义在项目lib目录下的帮助文件中:defuser_logged_in?ifsession[:user]@user=session[:user]return@userendreturnnilend所以,问题是:conditionbloc

ruby - 如何在 watir-webdriver 中查看应用于 HTML 元素的 CSS 样式?

我正在使用watir-webdriver并试图检查HTML元素的背景颜色。问题是背景颜色是在CSS中设置的,而不是在HTML标签中设置的。有没有办法使用watir-webdriver读取CSS值? 最佳答案 是的,使用样式方法例子:require'watir-webdriver'b=Watir::Browser.start'minesweeper.github.com'putsb.div(:id=>'g1minesRemaining100s').style'background-image'

ruby - 为什么 Date.new 不调用初始化?

我想创建Date的子类。一个正常的、健康的、年轻的ruby​​ist,没有被Date的实现的特殊性所伤害,会以下面的方式来解决这个问题:require'date'classMyDate然后继续以最预期的方式使用它......require'my_date'mdt=MyDate.new(2012,1,28)putsmdt.to_s...只是因为Date::new方法实际上是Date::civil的别名,它永远不会调用初始化。在这种情况下,最后一段代码打印“2012-01-28”而不是预期的“2012-12-25”。亲爱的Ruby社区,这是什么鬼?new别名是否有一些很好的理由,以便它忽略

ruby - 制作命令行程序 "full screen"

我想知道如何在shell中创建“全屏”窗口的外观,如在vim、emacs等中。是否可以在Ruby中以编程方式执行此操作?这对平台的依赖程度如何?编辑:我不是在寻找如何让我的shell进入全屏模式。我正在寻找一种方法来隐藏以前输入的命令并用应用程序“填充”shell屏幕。它适用于安装程序。 最佳答案 您可能正在寻找的是ncurses或S-Lang支持提供你的全TUI经验。Ruby的gem环境提供了几个可能值得探索的gem:$gemlist--remote|grep-icursescursesx(003)ffi-ncurses(0.4.

ruby-on-rails - 如何在 Ruby 中封装包含的模块方法?

我希望能够在包含该模块的类无法访问的模块中拥有方法。给定以下示例:classFooincludeBardefdo_stuffcommon_method_nameendendmoduleBardefdo_stuffcommon_method_nameendprivatedefcommon_method_name#blahblahendend我希望Foo.new.do_stuff爆炸,因为它试图访问模块试图对其隐藏的方法。不过,在上面的代码中,Foo.new.do_stuff可以正常工作:(有没有办法在Ruby中实现我想做的事情?更新-真正的代码classPlace"Place"}has_

ruby-on-rails - Rails/Heroku - 如何对上传的文件进行反病毒扫描?

如何扫描上传文件中的病毒、木马等?只是想阻止一些用户上传一些讨厌的东西。我正在使用Heroku和AmazonS3。 最佳答案 Checkoutthis它支持REST/JSON防病毒网络服务。 关于ruby-on-rails-Rails/Heroku-如何对上传的文件进行反病毒扫描?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/9640516/

ruby - 如何跟踪 paper_trail 中的自定义事件?

我正在使用paper_trail进行审计跟踪。除了创建、更新和删除事件外,我还想跟踪一些自定义事件,例如查看(记录)、发送(电子邮件)等。我们如何在审核模型时引入此类自定义事件? 最佳答案 我发现了一个调整,可以在paper_trail管理的Version中添加自定义事件:Version.create(item_type:"Campaign",item_id:campaign.id,event:"Sent")也许这不是正确的解决方案,但它帮助我实现了目标。我想更多地探索paper_trail以找到更好的解决方案。

ruby - 将 SSL 添加到连接

当您需要首先通过明文进行通信时,如何在Ruby中使用SSL保护套接字?我不能使用OpenSSL::SSL::SSLServer因为首先请求SSL连接是客户端的责任长话短说,我正在尝试实现RFC3207,其中客户端发送关键字“STARTTLS”,然后创建SSL连接。我的问题是“服务器发送‘220OK’后如何创建SSL连接?”我知道我可以使用OpenSSL::SSL::SSLSocket在客户端,但我不知道在服务器端该做什么如果你知道如何用Ruby以外的语言来做到这一点,只需发布​​代码,我会翻译它,我已经为此工作了大约8个小时,我需要我能得到的一切我在#ruby-lang中询问过,但无济

ruby - 在 Vim 中使用 Ctags 跳转到 Ruby bang 方法

我在使用ExhuberantCtags跳转到Rubybang方法时遇到问题。我已经搜索过其他有类似问题的人,但找不到任何东西。可以使用以下小型Rub​​y类显示该问题的示例:classHellodefstartmethod!enddefmethod#Blahenddefmethod!#Blahendend当ctags-R.在此文件上运行时,生成的tags文件包含以下两行,表明这两种方法都是在生成时发现的:methodtest.rb/^defmethod$/;"fclass:Hellomethod!test.rb/^defmethod!$/;"fclass:Hello但是,如果我将光标放