Ruby - IO.read(' file_path')返回空字符串,但我知道文件有内容

时间:2014-04-21 16:29:50

标签: ruby file rspec io

我试图写一个RSpec测试,确认在出现问题时会向stderr发送错误消息。我的解决方案是将stderr输出到文件:

$stderr = File.new(File.join(@output_path, 'stderr.txt'), 'w')

最后,当我的测试导致错误发生时,stderr.txt文件包含此字符串:

envelope_evaluation.rb: Could not initialize variables

但是,当我尝试通过这一行从stderr.txt中提取这个字符串时:

contents = IO.read("#{@output_path}/stderr.txt")

内容变量始终为空。我错过了IO步骤吗?

NEW EDIT

在下面的讨论之后,我已经清理了一些代码,但我仍然遇到空字符串结果。当我将$ stderr重定向到我的错误文件时,我现在正在读/写模式下执行:

$stderr = File.new("#{@output_path}/stderr.txt", 'w+')

之后,我的envelope_evaluation.rb脚本执行,并且stderr.txt文件填充了错误消息。由于$ stderr现在具有读取权限,因此我通过以下方式获取其内容:

$stderr.flush
contents = $stderr.read

不幸的是'内容'变量仍然是空的。

0 个答案:

没有答案