我有以下Ruby / Rails代码:
file = File.new("#{folder}/conf.txt", 'a+')
file.write(content)
file.close
问题是这个文件有时会被创建但是它是空的,而我确定内容变量不是空的(它也用在代码的另一部分上)。
如何确定文件是否已写入?由于这是我的应用程序中的一个重要步骤,如果无法编写,我希望得到异常或某种错误。
答案 0 :(得分:3)
从原始数据进行往返,将其写入文件,然后从文件中读取。如果它与原始内容匹配,您可以确定。
答案 1 :(得分:0)
感谢所有回答这个问题的人,并且对于缺乏关注感到抱歉,但是在发布问题后的第一天,我开始注意到Apache日志中的错误(我正在使用Passenger + Apache):
[ pid=21526, timestamp=1350608946 ] Process aborted! signo=SIGABRT(6), reason=SI_TKILL, signal sent by PID 21526 with UID 0, backtrace available.
--------------------------------------
[ pid=21526 ] Backtrace with 34 frames:
PassengerHelperAgent[0x525668]
/lib64/libpthread.so.0(+0xf4c0)[0x7fcabb2014c0]
/lib64/libc.so.6(gsignal+0x35)[0x7fcaba7059a5]
/lib64/libc.so.6(abort+0x175)[0x7fcaba707185]
big backtrace...
我搜索了这个问题,但找不到有类似问题/回溯的人。
他们,我决定转到Passenger + Nginx。
1周后,问题就消失了。曾经发生过一天一次或两次的事情,并没有一次发生在Nginx上。相同的代码(根本没有更新)和相同的机器。
虽然我无法重现这个问题,但在我调查期间,我使用“File.close”方法进行了多次测试。只要无法写入文件,它就会抛出异常。
不幸的是,我没有足够的经验来深入研究这个问题,我对Nginx + Passenger非常满意。