草庐IT

stdin_reader

全部标签

Ruby 调试器在 STDIN 上失败。获取用户输入

我相信您可以轻松重现该问题。只需使用一个新的RubyMine(7.1)—Mac或Windows版本,Ruby2.2,创建简单的脚本:puts"Hi,i'mgonnabreakyourdebugger:)"user_input=getsputs"Hereshouldbebreakpoint"将断点放在第3行并运行调试session(RubyMine使用ruby-debug-idegem)。当您在RubyMine控制台窗口中键入内容以便脚本在gets中读取时—程序不会吃掉您的输入说:Couldnotexecutestatement:currentstackframeisunavailabl

ruby - 如何动态添加 attr_reader

我希望下面的代码能按预期工作,但它给了我一个NoMethodError(为#classMyClassendmy_object=MyClass.newmy_object.instance_variable_set(:@foo,"bar")MyClass.send("attr_reader",:foo)putsmy_object.foo问题是我在一个更大的应用程序中使用完全相同的代码并且它完全按照我的预期工作,但是当我将它简化为这个最基本的示例时它失败了。(我知道还有很多其他方法可以完成我在Ruby中所做的事情) 最佳答案 使用Modu

ruby - 如何检查 Ruby 脚本中的 STDIN 输入?

我需要检查Ruby脚本中是否存在STDIN输入,就像mysql命令一样。如果没有任何内容指向STDIN,则脚本不应尝试读取STDIN。如何以跨平台的方式做到这一点? 最佳答案 这是在Linux中经常做的事情:#!/usr/bin/envrubystr=(STDIN.tty?)?'notreadingfromstdin':$stdin.readputsstr>>$rubytest.rb>>notreadingfromstdin>>$echo"readingfromstdin"|rubytest.rb>>readingfromstdin

ruby - 如何获取通过 attr_reader 或 attr_accessor 定义的属性

假设我有一个类AclassAattr_accessor:x,:ydefinitialize(x,y)@x,@y=x,yendend如何在不知道它们的命名方式的情况下获取x和y属性。例如a=A.new(5,10)a.attributes#=>[5,10] 最佳答案 使用内省(introspection),卢克!classAattr_accessor:x,:ydefinitialize(*args)@x,@y=argsenddefattrsinstance_variables.map{|ivar|instance_variable_ge

ruby - Ruby 中的 STDIN 和 $stdin 有什么区别?

Ruby有两种引用标准输入的方法:STDIN常量和$stdin全局变量。除了我可以将不同的IO对象分配给$stdin因为它不是常量(例如,在我的child中fork重定向IO之前)之外,还有什么STDIN和$stdin的区别?我什么时候应该在我的代码中使用它们?如果我重新分配$stdin,它会影响STDIN吗?这是否也适用于STDOUT/$stdout和STDER/$stderr? 最佳答案 如果$stdin重新分配,STDIN不受影响。同样$stdinSTDIN时不受影响被重新分配(这是完全可能的(尽管毫无意义),但会产生警告)。

ruby - gets.chomp() 与 STDIN.gets.chomp() 之间有什么区别?

它们是相同的,还是这两个命令之间存在细微差别? 最佳答案 gets将使用Kernel#gets,它首先尝试读取通过ARGV传入的文件的内容。如果ARGV中没有文件,它将使用标准输入代替(此时它与STDIN.gets相同。注意:正如echristopherson指出的那样,Kernel#gets实际上会退回到$stdin,而不是STDIN。但是,除非您将$stdin分配给不同的输入流,否则默认情况下它将与STDIN相同。http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-ge

ruby - Ruby 中 STDIN 的最佳实践?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭2年前。Improvethisquestion我想用Ruby处理命令行输入:>catinput.txt|myprog.rb>myprog.rbmyprog.rbarg1arg2arg3...最好的方法是什么?特别是我想处理空白的STDIN,我希望有一个优雅的解决方案。#!/usr/bin/envrubySTDIN.read.split("\n").eachdo|a|putsaendARGV.eachdo|b|putsbend

ruby - 为什么要使用 Ruby 的 attr_accessor、attr_reader 和 attr_writer?

Ruby有这种方便快捷的方式来共享实例变量,通过使用像这样的键attr_accessor:varattr_reader:varattr_writer:var如果我可以简单地使用attr_accessor,为什么我会选择attr_reader或attr_writer?是否有类似性能的东西(我怀疑)?我想这是有原因的,否则他们不会制作这样的key。 最佳答案 您可以使用不同的访问器将您的意图传达给阅读您代码的人,并使编写无论其公共(public)API如何调用都能正常工作的类变得更加容易。classPersonattr_accessor

Javascript 检测是否安装了 Adob​​e Reader

我们有一些PDF表单不能在非Adob​​ePDF阅读器中正确显示(即WebKit的内置PDF阅读器不能正确显示一些专有的Adob​​e东西)。我们想检测用户何时没有安装AdobePDF阅读器并给他们一点警告,但在2014年我很难弄清楚如何做到这一点。好像thisscript在2011年工作。基本上它循环遍历navigator.plugins并查找名称为AdobeAcrobat或ChromePDFViewer的插件。for(keyinnavigator.plugins){varplugin=navigator.plugins[key];if(plugin.name=="AdobeAcro

javascript - 通过 Javascript 的 Adob​​e Reader 插件交互

我正在显示在ASP页面中即时生成的PDF文件。PDF生成(并下载到客户端)可能需要一些时间,我想向用户提供一些反馈(加载消息或其他内容)。据我所知,无法知道何时查看PDF,因为加载Adob​​eReader插件时会触发DOM事件(即使它尚未显示任何内容)。我注意到有一个我可能会使用的插件对象的JavascriptAPI。我注意到它上面有一个LoadFile方法,但不幸的是它似乎没什么用。adobe的文档真的没什么用。它仅将Javascript视为一种插件编写语言或OLE交互(而且很差)。是否有任何API文档,是否可以知道何时加载了PDF?如果我可以将PDF流传递给某种PDF查看器,那就