我想知道我是否采用了正确的方法。
def checkout
clone = system( "svn export #{file} tmp/" )
open_file = system( "start tmp/#{@file}" )
end
现在,我可以使用默认编辑器打开我想要的文件,但是如何在关闭前记录文件是否被修改。
我应该创建Process
并执行Process.wait
或其他什么吗?
感谢您的帮助
答案 0 :(得分:2)
使用File::mtime
方法。
将指定文件的修改时间作为Time对象返回。
file_time_before_opening = File.mtime('your file/path')
# do file operation as you like
file_time_after_closing = File.mtime('your file/path')
# now compare file_time_before_opening and file_time_after_closing to know
# if it is modified or not.
答案 1 :(得分:1)
如果您的意思是在Windows中使用start
,请使用/wait
或/w
选项让它等到编辑器终止。
使用IO::read
检查文件内容修改。 (在编辑执行之前,之后)。
before = IO.read('tmp/#{@file}', {mode: 'rb'})
system("start /wait tmp/#{@file}")
after = IO.read('tmp/#{@file}', {mode: 'rb'})
# Check the file content modification.
if before != after:
# File changed!
如果您正在编辑一个大文件,IO::read
将相应地使用memroy。如果您的存储库中存在如此庞大的文件,请使用File::mtime
作为Arup Rakshit建议。 (缺点:无需修改即可保存误报)