草庐IT

stdout_writer

全部标签

ruby - Ruby 是否使用 $stdout 来写入 puts 和 return 的输出?

我想知道Ruby用来在命令行打印这些东西的输出流:irb(main):001:0>a="test"=>"test"irb(main):002:0>putsatest=>nilirb(main):003:0>a=>"test"$stdout是否用于irb(main):002:0>和irb(main):003:0>?而且,在这两次调用之间,$stdout的值是否有任何变化?另外,有人能告诉我打印/写入这些内容的Ruby源代码吗? 最佳答案 是的。而且很容易向自己测试/证明。在命令行试试这个:ruby-e'puts"foo"'>test.

ruby - 将全局 $stdout 重新分配给控制台 - ruby

我正在尝试将$stdout设置为临时写入一个文件,然后返回到一个文件。test.rb:old_stdout=$stdout$stdout.reopen("mytestfile.out",'w+')puts"thisgoesinmytestfile"$stdout=old_stdoutputs"thisshouldbeontheconsole"$stdout.reopen("mytestfile1.out",'w+')puts"thisgoesinmytestfile1:"$stdout=old_stdoutputs"thisshouldbebackontheconsole"这是输出。r

ruby - 在 ruby​​ 中生成一个进程,捕获 stdout,stderr,获取退出状态

我想从ruby​​rake脚本运行一个可执行文件,比如foo.exe我希望将foo.exe的STDOUT和STDERR输出直接写入我正在运行rake任务的控制台.当进程完成时,我想将退出代码捕获到一个变量中。我如何实现这一目标?我一直在玩backticks、process.spawn、system但我无法获得我想要的所有行为,只有部分更新:我在Windows上,在标准命令提示符下,而不是cygwin 最佳答案 system获取您想要的STDOUT行为。它还返回true作为零退出代码,这可能很有用。$?填充了有关最后一次system调

Ruby:写入 stdin 并从 stdout 读取?

我正在编写一个ruby​​程序,它应该执行另一个程序,通过stdin向它传递值,从它的stdout读取响应,然后打印响应。这是我目前所拥有的。#!/usr/bin/envrubyrequire'open3'stdin,stdout,stderr=Open3.popen3('./MyProgram')stdin.puts"helloworld!"output=stdout.readerrors=stderr.readstdin.closestdout.closestderr.closeputs"Output:"puts"-------"putsoutputputs"\nErrors:"p

ruby-on-rails - Rails attr_accessor 和 attr_writer

新手提醒我正在观看RyanBate的一个关于虚拟属性的RailsCasts。他正在为博客平台上的一篇文章添加标签。http://media.railscasts.com/assets/episodes/videos/167-more-on-virtual-attributes.mp4有一次他有工作代码attr_accessor:tag_names在这个例子中,如果标签名称通过验证,则不会出现在表单中,因此他更改了属性的名称,并添加了一个方法,以便标签名称在不同字段出现验证错误时保持不变attr_writer:tag_namesdeftag_names@tag_names||tags.m

ruby - 为什么在重定向时,Ruby 的 STDERR 输出先于 STDOUT 输出?

在bash中,这给出了预期顺序的输出:ruby-e"puts'one';raise'two'"one-e:1:in`':two(RuntimeError)但是如果我将STDERR重定向到STDOUT,我会在输出之前收到错误,这是我不想要的:ruby-e"puts'one';raise'two'"2>&1|cat-e:1:in`':two(RuntimeError)one我想将输出重定向到一个文本文件(它的行为方式与上面的cat相同)并获得输出和异常,但顺序与查看我的输出时的顺序相同终端。这能实现吗? 最佳答案 发生这种情况是因为行缓

ruby - 为什么 Logger 输出到 STDOUT 不会重定向到文件?

这个脚本被命名为o.rb:@logger=Logger.new(STDOUT)@logger.info"start_time:#{start_time}"当我使用./o.rb运行它时,控制台上的输出是正确的。但是,当我尝试./o.rb>log.txt2>&1时,日志文件是空的!为什么会这样?我在使用简单的puts函数时遇到了同样的问题。更新这将重现此问题:require'logger'logger=Logger.new(STDOUT)loopdologger.info"Thisisatesthaha"sleep(1)end当我使用./foo.rb运行它时,它会正确写入控制台输出。当我运

ruby - 将 STDOUT 输出到文件并再次返回

我使用以下代码将STDOUT路由到一个文件:STDOUT.reopen(File.open("./OUTPUT",'w+'))现在我需要再次将STDOUT路由到终端。我该怎么做? 最佳答案 已更新orig_std_out=STDOUT.cloneSTDOUT.reopen(File.open('OUTPUT','w+'))puts"testtofile"STDOUT.reopen(orig_std_out)puts"testtoscreen" 关于ruby-将STDOUT输出到文件并再次

ruby - 只是为了好玩,我如何编写一个 ruby​​ 程序,一次缓慢地打印到 stdout 一个字符?

我认为这可能有效"abcdefghijk".each{|c|putcc;sleep0.25}我希望看到“abcdefj”一次打印一个字符,每个字符之间间隔0.25秒。但是整个字符串是一次打印出来的。 最佳答案 两件事:您需要使用.each_char来遍历字符。在Ruby1.8中,String.each将逐行进行。在Ruby1.9中,String.each已弃用。如果您希望字符立即出现,您应该手动刷新$stdout。否则,它们往往会被缓冲,以便字符在最后一次出现。.#!/usr/bin/envruby"abcddefghijk".ea

ruby-on-rails - pdf-writer-1.1.8/lib/pdf/writer.rb :712: invalid multibyte char (US-ASCII)

我正在使用rubyversion1.9.3并且在启动thinserver时出现错误/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.12.4/lib/bundler/runtime.rb:100:in`require':/usr/local/lib/ruby/gems/1.9.1/gems/pdf-writer-1.1.8/lib/pdf/writer.rb:712:invalidmultibytechar(US-ASCII)(SyntaxError)/usr/local/lib/ruby/gems/1.9.1/gems/pdf-writer-