我习惯使用open3在Ruby中运行命令.因为似乎没有一个等效的lib在lang lang,我克服了这个:
def run_cmd(cmd, args)
stdout_str = IO::Memory.new
stderr_str = IO::Memory.new
result = [] of Int32 | String
status = Process.run(cmd, args: args, output: stdout_str, error: stderr_str)
if status.success?
result = [status.exit_code, "#{stdout_str}"]
else
result = [status.exit_code, "#{stderr_str}"]
end
stdout_str.close
stderr_str.close
result
end
cmd = "ping"
hostname = "my_host"
args = ["-c 2", "#{hostname}"]
result = run_cmd(cmd, args)
puts "ping: #{hostname}: Name or service not known" if result[0] != 0
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?这位退休的网络专家说,他不是一名软件开发人员.
提前感谢所有建议.
Kemal目前允许通过以下方式设置配置选项
Kemal.config.env = "development"
Kemal.config.port = "3456"
我想做一个像块一样的事情:
configuration do |config|
config.env = "development"
config.port = "3456"
...
end
这甚至可能吗?
感谢您的任何见解.
我想在我的代码中嵌入 Crystal 版本和应用程序版本。我想出了这个:
macro crystal_version
{{ `crystal env`.stringify.split("\n")[2] }}.split("=")[1].gsub("\"", "")
end
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎有点笨拙 - 所有的阵列按摩和替换。我也依赖于我需要在以后在同一个地方的信息。我可以用语言中的某些东西来完成同样的事情吗?
感谢您提供任何见解。