小编lew*_*wis的帖子

运行shell命令水晶语言并捕获输出

我习惯使用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)

有一个更好的方法吗?这位退休的网络专家说,他不是一名软件开发人员.

提前感谢所有建议.

crystal-lang

2
推荐指数
1
解决办法
644
查看次数

使用块的Kemal配置

Kemal目前允许通过以下方式设置配置选项

Kemal.config.env = "development" Kemal.config.port = "3456"

我想做一个像块一样的事情:

configuration do |config| config.env = "development" config.port = "3456" ... end

这甚至可能吗?
感谢您的任何见解.

crystal-lang kemal

2
推荐指数
1
解决办法
58
查看次数

在应用程序中嵌入 Crystal-lang 版本

我想在我的代码中嵌入 Crystal 版本和应用程序版本。我想出了这个:

  macro crystal_version
    {{ `crystal env`.stringify.split("\n")[2] }}.split("=")[1].gsub("\"", "")
  end
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎有点笨拙 - 所有的阵列按摩和替换。我也依赖于我需要在以后在同一个地方的信息。我可以用语言中的某些东西来完成同样的事情吗?

感谢您提供任何见解。

crystal-lang

1
推荐指数
1
解决办法
47
查看次数

标签 统计

crystal-lang ×3

kemal ×1