Ruby Noob在这里! 我正在尝试使用变量作为要创建的文件的名称来创建和写入ruby中的文件。如果使用文件名的类型,则它与另一个变量#{system}相同,但是问题似乎出在早期解析的特定变量上。 收到错误-Errno :: ENOENT:没有这样的文件或目录
array#record contains:
Sun /log/schedule.log.20180617
Mon /log/schedule.log.20180618
Tue /log/schedule.log.20180619
Wed /log/schedule.log.20180620
Wed /log/schedule.log
代码部分。
lines = record.split("\n")
lines.each do |line|
log = /(\/.*schedule.log(?:\.20[0-9]{6})?)/.match(line)
@cmd = "grep DEBUG #{log} | grep \"start\\|running\""
rawdata = ssh.exec!(@cmd)
logfile = File.new("#{system}_#{log}", 'w+')
logfile.puts rawdata
logfile.close
end
ssh.close
输出 收到错误-Errno :: ENOENT:没有这样的文件或目录-server1_schedule.log
所需的输出应创建少量具有命名约定<persystem_schedule.log<date>>
的日志文件。
答案 0 :(得分:1)
我很确定您没有提供足够的信息来解决问题,但是在这些情况下,我发现简化代码通常很有帮助;这样做经常会发现其他问题。
使用文件others
,open
和puts
是否有原因?这增加了很多复杂性,我认为这是不必要的,并且复杂性可能掩盖了其他一些问题。我建议更改此:
close
像这样:
rawdata = ssh.exec!(@cmd)
logfile = File.new("#{system}_#{log}", 'w+')
logfile.puts rawdata
logfile.close
查看结果是否发生变化或是否显示出其他问题。