这个问题是在devops部门实习:
“编写执行任意系统调用的ruby库(例如:”dmesg“,”ping -c 1 www.google.com“)并提供stderr和stdout的分离输出流,并提供最终返回码过程。用单元测试展示你的工作。“
我是否应该使用已经建立的系统调用并在Ruby代码中复制它们?这对我来说似乎很愚蠢。我是否应该提出自己的任意调用并编写一个包含错误和状态调用的库?
我不是在找人写这个。我觉得解决这个问题的第一步就是理解它。
答案 0 :(得分:0)
答案 1 :(得分:0)
作业措辞不力,滥用了一些条款。另外,我们只能猜出他们真正的期望;适当的做法是直接向公司要求澄清。
话虽如此,他们可能想要的是一种处理任何给定命令及其参数作为装饰方法的方法,类似于标准库中Open3#capture3的工作方式。这意味着您编写的代码应该将命令和任何参数作为参数。
例如,使用标准库中的Open3#capture3:
require 'open3'
def command_wrapper cmd, *args
stdout_str, stderr_str, status = Open3.capture3 "#{cmd} #{args.join ' '}"
end
command_wrapper "/bin/echo", "-n", "foo", "bar", "baz"
#=> ["foo bar baz", "", #<Process::Status: pid 31661 exit 0>]
我真诚地怀疑重新实现这个库是有用的,但这看起来肯定是他们要求你做的。耸肩。
您还应该为重新实现编写单元测试,因此您必须使用内置框架(如Test :: Unit或MiniTest)或外部测试框架(如RSpec或错误)来解决问题。 。有关可用单元测试框架的更全面列表,请参阅Ruby Toolbox。