【发布时间】:2018-06-21 10:00:52
【问题描述】:
鲁比新手在这里! 我正在尝试使用变量作为要创建的文件的名称来创建和写入 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>> 的日志文件。
【问题讨论】:
-
这是你得到的字面错误吗? ENOENT 通常表示文件或目录不存在,例如,如果您尝试在
foo不存在时创建foo/bar。 -
我建议您也许可以发布一段人们可以运行的代码,这样更容易获得帮助。即使有人可以通过阅读找到任何错误。
-
iGian - 代码段是实际的代码段。我添加了“记录”数组的值,以便人们更轻松地运行代码,因为这部分代码是 100 多行代码的一部分。它已经缩小了“log”变量的数据类型。不知何故,当我们使用 matchData 时,它不再是一个字符串。我尝试使用 .to_s 将数据类型转换回字符串,但它仍然没有成功。