如何包装已编译的命令行工具以在Ruby中使用?

时间:2015-09-04 06:55:56

标签: ruby bash sip pjsip

我已经为我的机器编译并测试了一个开源命令行SIP客户端,我们可以假设它与我们商店中的所有其他机器具有相同的架构。我这意味着我已成功将已编译的二进制文件传递给商店中的其他人,并且他们能够使用它们。

该工具有一个相当深奥的调用,一个简单的bash脚本在执行之前通过管道传递给它,如下所示:

(sleep 3; echo "# 1"; sleep 3; echo h) | pjsua sip:somephonenumber@ip --flag_1 val --flag_2 val

请注意,前导bash脚本是程序运行的重要部分,并且该行本身似乎是最佳使用方法。

在解决我的问题时,我正在考虑以下事项:

  1. 我认为我不能指望店里有很多其他人 为自己编译二进制文件

  2. 在商店中有一个共同的系统架构,认为回购可以容纳最新版本是合理的

  3. 有办法使用Ruby调用该工具将是最有用的,也是最容易访问的 大多数人。

  4. 传递的主要bash脚本需要完全可扩展。这些表示可修改的“场景”,例如在这种情况下:

    1. 呼叫
    2. 等三秒钟
    3. 按1
    4. 等三秒钟
    5. 挂断
  5. 可能有多达十几个标志。可能是配置文件。

  6. 创建一个以其先前已编译过的命令行工具为核心的gem是否合理?

2 个答案:

答案 0 :(得分:1)

创建使用命令行工具的gem似乎是合理的。我唯一要说的是使用system('which psjua')检查命令是否可用,如果尚未安装则会引发信息错误。

答案 1 :(得分:0)

因此,我所缺少的词汇似乎是扩展。 Here是关于在Ruby Gem中包装Ruby C扩展的很好的堆栈讨论。

以下是有关使用扩展程序创建Gems的Gem指南的link

显然不仅仅是它已经完成,而是围绕它的使用有一系列最佳实践。